как взять ввод с клавиатуры, не спрашивая номер ввода, который он хочет ввести - PullRequest
0 голосов
/ 08 мая 2018

Я пытался закодировать код, в котором код прекращает обработку ввода после прочтения числа 42. Все числа на входе являются целыми числами. В этом коде пользователя просят указать номер ввода, который он хочет дать. Но я не понимаю, как принимать данные, не спрашивая пользователя, сколько он хочет ввести.

import java.util.Scanner;

public class antarahac {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int pattern[] = new int[1];
        pattern[0] = 42;
        int max, ls, lp = 1;
        System.out.println("enter the no. of values you want to enter");
        ls = sc.nextInt();
        int input[] = new int[ls];
        for (int i = 0; i < ls; i++) {
            input[i] = sc.nextInt();

        }
        max = ls - lp - 1;
        boolean flag;
        for (int i = 0; i < max; i++) {
            flag = true;
            for (int j = 0; j < lp && flag == true; j++) {
                if (pattern[j] != input[j + i]) {
                    flag = false;
                    System.out.println("" + input[i]);

                }
            }
            if (flag == true) {

                break;
            }
        }
    }

}

1 Ответ

0 голосов
/ 08 мая 2018

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

int tmp;
while((tmp = sc.nextInt()) != 42){
    // do something
}

Это будет считывать ввод, пока не будет введен 42.

Scanner sc = new Scanner(System.in);
int tmp;
while((tmp = sc.nextInt()) != 42){
    System.out.println(tmp);
}
sc.close();

Ввод:

1, 2, 3, 5, 48, 42

Выход:

1
2
3
5 * * тысяча двадцать-один 48

Дополнительная информация

Теперь, если вы хотите сохранить их, если вы используете массив, вам нужно будет создать массив с достаточным количеством пробелов (рискованным), например: new int[1000]; или вы можете использовать List, чтобы использовать коллекцию динамического размера , Если вы этого не знаете, просто знайте, что для создания List вам просто нужно:

List<Integer> input = new ArrayList<>(); //int[] input = new int[####];

Затем, чтобы добавить значение в конце, вы можете:

input.add(i); //input[index] = i;

И прочитать значение (получить):

input.get(index);  // input[index]

Затем я замечаю, что вы используете ls, предшествующий размеру массива, вы можете узнать, сколько значений было добавлено в список, используя метод size():

ls = input.size();
...