Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 6

Программа выделяет из случайной строки (введенной пользователем) числа (только целые) и помещает их в массив

11.04.2017, 00:54. Показов 2280. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Помогите, пожалуйста. На консоль выводятся два массива, заполненных нулями. где ошибки?


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package filtrstrok;
 
/*Пользователь вводит случайную строку, программа выделяет из неё только числа
    
    и записывает их в массив по возрастанию
    
 */
import java.util.Scanner;
 
public class FiltrStrok {
 
    public static void main(String[] args) {
 
        System.out.println("Vvedite stroku: ");
 
        Scanner sc = new Scanner(System.in); // создаем объект класса Scaner
 
        String s1 = sc.nextLine(); // вводим строку с клавиатуры
        String s2 = new String();
 
        int l = 1; //счетчик для прохода по строке
        int k = 1; // счетчик для записи в новый массив
        char a; // переменная для записи в неё cbvdjkf из строки
 
        int[] m2 = new int[s1.length()];// конечный массив
 
        System.out.println();
 
        while (l <= s1.length() - 1) { //строка просматривается посимвольно во внешнем цикле while
            a = s1.charAt(l);
            while (a >= 0 && a <= 9) { // если в а записался не символ 
                s2 = s2 + a; // символы конкатенируются
                l++;
                a = s1.charAt(l);
 
            }
            l++;
 
            if (s2.isEmpty() != true) {
                m2[k] = Integer.parseInt(s2); //запись в массив значыения строки
                k++;
                s2 = " "; // очистка строки
            }
 
        }
        System.out.println(" NE Otsortirovanniy massiv: ");
 
        for (int i = 0; i <= m2.length - 1; i++) {
 
            System.out.print(m2[i] + "  ");
 
        }
        System.out.println();
 
        // пузырьковая сортировка массива с числами
        for (int i = m2.length - 1; i > 0; i--) {
 
            for (int j = 0; j < i; j++) {
 
                if (m2[j] > m2[j + 1]) {
 
                    int tmp = m2[j];
 
                    m2[j] = m2[j + 1];
 
                    m2[j + 1] = tmp;
 
                }
 
            }
 
        }
 
        // вывод конечного массива
        System.out.println("Otsortirovanniy massiv: ");
 
        for (int i = 0; i <= m2.length - 1; i++) {
 
            System.out.print(m2[i] + "  ");
 
        }
 
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2017, 00:54
Ответы с готовыми решениями:

Программа выделяет из случайной строки (введенной пользователем) числа (только целые) и помещает их в массив
Программа выделяет из случайной строки (введенной пользователем) числа (только целые) и помещает их в массив по возрастанию

Программа выделяет из строки числа и помещает их в массив
Программа выделяет из строки (введенной пользователем) числа (только целые) и помещает их в массив, содержимое которого затем выводится на...

Выделить отдельные слова и числа из введенной пользователем строки
Составить программу, которая выделяет отдельные слова и числа из введенной пользователем строки. Словом считается последовательность букв,...

14
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
11.04.2017, 01:11
Лучший ответ Сообщение было отмечено trotviil как решение

Решение

Цитата Сообщение от trotviil Посмотреть сообщение
a >= 0 && a <= 9)
как ты тут char с цифрой сравниваешь?

Добавлено через 5 минут
Java
1
while ((int)a >= 48 && (int)a <= 57)
0
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 6
11.04.2017, 08:00  [ТС]
Спасибо, это исправил, но в выводе всё равно куча ошибок:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInput String(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java: 592)
at java.lang.Integer.parseInt(Integer.java: 615)
at filtrstrok.FiltrStrok.main(FiltrStrok.ja va:40)
C:\Users\Андрей\AppData\Local\NetBeans\C ache\8.2\executor-snippets\run.xml:53: Java returned: 1

Java
1
2
3
4
5
if (s2.isEmpty() != true) {
                m2[k] = Integer.parseInt(s2.trim()); //запись в массив значыения строки
                k++;
                s2 = " "; // очистка строки
            }
думал, что trim() от части ошибок избавит, но не помогло
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
11.04.2017, 09:40
Java
1
2
3
4
if (s2 != null) {
 
s2 = null
}
переделай
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.04.2017, 11:02
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
while ((int)a >= 48 && (int)a <= 57)
что такое 48 и 57?
никогда так не пиши
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
11.04.2017, 11:43
xoraxax,
Во первых 48 - 57 это кодировка цифр 0 -9, во вторых я не пишу так а привел пример , что он не может сравнивать char c цифрой.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.04.2017, 12:11
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
а привел пример
так приводи нормальные примеры, ни к чему приучать людей к плохому
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
11.04.2017, 12:16
xoraxax, ну если знаешь как по другому char сравнивать с цифрой приведи пример)
0
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 6
11.04.2017, 13:55  [ТС]
А метод parseInt правильно определен? Просто я когда проверял на каком моменте прога не работает, у меня именно перед этим циклом крашилось
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
11.04.2017, 14:05
trotviil, Да просто ты когда s2 = " " пишешь, s2 уже не пустой, а пробел переводить в цифру не получается вот и выдает ошибку
0
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 6
11.04.2017, 15:33  [ТС]
DavidKarchikyan, после того как поменял
if (s2 != null) {

s2 = null
}

компелироваться вообще перестало. вот что пишел
Exception in thread "main" java.lang.StringIndexOutOfBoundsExceptio n: String index out of range: 11
at java.lang.String.charAt(String.java:658)
at filtrstrok.FiltrStrok.main(FiltrStrok.ja va:35)
C:\Users\Андрей\AppData\Local\NetBeans\C ache\8.2\executor-snippets\run.xml:53: Java returned: 1
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.04.2017, 15:36
Цитата Сообщение от DavidKarchikyan Посмотреть сообщение
ну если знаешь как по другому char сравнивать с цифрой приведи пример)
Java
1
2
3
4
5
        System.out.println(Character.isDigit('s'));
        System.out.println(Character.isDigit('5'));
        System.out.println('1'>'0');
        char c='3';
        System.out.println(c>='0' && c<='9');
0
64 / 64 / 26
Регистрация: 07.01.2016
Сообщений: 374
11.04.2017, 15:50
Цитата Сообщение от xoraxax Посмотреть сообщение
System.out.println(Character.isDigit('s' )); System.out.println(Character.isDigit('5' ));
за это спасибо
Цитата Сообщение от xoraxax Посмотреть сообщение
char c='3'; System.out.println(c>='0' && c<='9');
а вот это почему то у меня false, хотя прочитал должно быть true

Добавлено через 4 минуты
trotviil, дасс
Java
1
2
3
4
5
if (s2 != null) {
        m2[k] = Integer.parseInt(s2.trim()); //запись в массив значыения строки
        k++;
        s2 = null; 
}
Добавлено через 4 минуты
и s2 объяви null в начале
0
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 6
11.04.2017, 16:10  [ТС]
DavidKarchikyan, вот как сейчас выглядит код, но он все равно не работает
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package filtrstrok;
 
/*Пользователь вводит случайную строку, программа выделяет из неё только числа
    
    и записывает их в массив по возрастанию
    
 */
import java.util.Scanner;
 
public class FiltrStrok {
 
    public static void main(String[] args) {
 
        System.out.println("Vvedite stroku:");
 
        Scanner sc = new Scanner(System.in); // создаем объект класса Scaner
 
        String s1 = sc.nextLine(); // вводим строку с клавиатуры
        String s2 = null;
        
 
        int l = 1; //счетчик для прохода по строке
        int k = 1; // счетчик для записи в новый массив
        char a; // переменная для записи в неё cbvdjkf из строки
 
        int[] m2 = new int[s1.length()];// конечный массив
 
        System.out.println();
         
        while (l <= s1.length() - 1) { //строка просматривается посимвольно во внешнем цикле while
            a = s1.charAt(l);
           while ((int)a >= 48 && (int)a <= 57) { // если в а записался не символ 
                s2 = s2 + a; // символы конкатенируются
                l++;
                a = s1.charAt(l);
 
            }
            l++;
 
            if (s2 != null) {
                m2[k] = Integer.parseInt(s2.trim()); //запись в массив значыения строки
                k++;
                s2 = null; // очистка строки
            }
 
        }
        System.out.println(" NE Otsortirovanniy massiv: ");
 
        for (int i = 0; i <= m2.length - 1; i++) {
 
            System.out.print(m2[i] + "  ");
 
        }
        System.out.println();
 
        // пузырьковая сортировка массива с числами
        for (int i = m2.length - 1; i > 0; i--) {
 
            for (int j = 0; j < i; j++) {
 
                if (m2[j] > m2[j + 1]) {
 
                    int tmp = m2[j];
 
                    m2[j] = m2[j + 1];
 
                    m2[j + 1] = tmp;
 
                }
 
            }
 
        }
 
        // вывод конечного массива
        System.out.println("Otsortirovanniy massiv: ");
 
        for (int i = 0; i <= m2.length - 1; i++) {
 
            System.out.print(m2[i] + "  ");
 
        }
 
    }
}
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.04.2017, 16:21
Java
1
2
3
4
5
6
7
8
9
String s = "qeqweq12asd1asdasd3asd999";
        Pattern p = Pattern.compile("(\\d+)");
        Matcher m = p.matcher(s);
        List<Integer> list = new ArrayList<>();
        while (m.find()) {
            list.add(Integer.parseInt(m.group()));
        }
        Collections.sort(list);
        System.out.println(list);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2017, 16:21
Помогаю со студенческими работами здесь

Работа с символами и строками. Составить программу, которая выделяет отдельные слова и числа из введенной пользователем строки
Составить программу, которая выделяет отдельные слова и числа из введенной пользователем строки. Словом считается последовательность букв,...

Выделить отдельные целые числа из введенной пользователем строки
Составить программу, которая выделяет отдельные целые числа из введенной пользователем строки. Числом считается последовательность цифр,...

Программа, которая помещает в массив строк текст, введенный пользователем
Создайте программу, которая помещает в массив строк текст, введенный пользователем. При вводе пустой строки или вводе десятой строки...

Выделить из строки числа (только целые) и поместить их в массив по возрастанию
#include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; void find_integers_in_string(char* strok, char* arry, int&amp; n) //...

Из введенной пользователем строки сформировать новую строку, состоящую из гласных букв введенной строки.
Напишите пожалуйста решение!СПАСИБО! Из введенной пользователем строки сформировать новую строку, состоящую из гласных букв введенной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru