Как закрыть некоторое время l oop для ArrayList, который собирает пользовательский ввод - PullRequest
1 голос
/ 18 февраля 2020

Вопрос звучит достаточно просто, но я потратил 2 часа на поиски ответа и, похоже, не могу его найти. Я пытаюсь создать программу, которая заполняет список массивов пользовательским вводом (целых чисел), а затем закрывает его, когда набирается число 0.

Пока у меня есть:

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.*;
/**
 * Write a description of class ArrayList2 here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */

public class Numbers

{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);

        System.out.println ("Enter a list of integers (Enter 0 when done): ");

        ArrayList<Integer> fullArray = new ArrayList<Integer>();

        while (keyboard.hasNextInt())
        {
            fullArray.add(keyboard.nextInt());
            System.out.println (fullArray);


        }

        System.out.println (fullArray);
    }
}

Моя проблема не в получении пользовательского ввода, а в закрытии массива при наборе 0. Я знаю, что hasNextInt возвращает true, пока их другой int, но 0 также int, поэтому он не закроет массив. Я попытался просто сказать if(keyboard.nextInt == 0), но это нарушает мой код и добавляет только все остальные числа в мой массив. Если кто-нибудь может мне помочь, это будет очень цениться. спасибо.

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Вместо добавления нового nextInt(), который заставит вас пропускать все остальные значения, просто сохраните nextInt, который вы уже использовали, в переменную (в данном случае nextValue), проверьте, является ли оно 0 , break из l oop, если он есть, в противном случае вы добавляете его в List.

. Вот рабочая версия ниже:

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println ("Enter a list of integers (Enter 0 when done): ");
    ArrayList<Integer> fullArray = new ArrayList<>();

    while (keyboard.hasNextInt()) {
        int nextValue = keyboard.nextInt();
        if (nextValue == 0) {
            break;
        }
        fullArray.add(nextValue);
        System.out.println (fullArray);
    }
}
0 голосов
/ 18 февраля 2020

Сделайте это следующим образом:

import java.util.ArrayList;
import java.util.Scanner;

public class Numbers {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Enter a list of integers (Enter 0 when done): ");

        ArrayList<Integer> fullArray = new ArrayList<Integer>();
        int x = -1;
        while (x != 0 && keyboard.hasNextInt()) {
            x = keyboard.nextInt();
            if (x != 0) {
                fullArray.add(x);
                System.out.println(fullArray);
            }
        }

        System.out.println(fullArray);
    }
}

Пробный прогон:

Enter a list of integers (Enter 0 when done): 
10
[10]
20
[10, 20]
30
[10, 20, 30]
0
[10, 20, 30]

Другой пробный прогон:

Enter a list of integers (Enter 0 when done): 
10
[10]
20
[10, 20]
a
[10, 20]
...