2017-11-20 1 views
-2

사용자 값을 사용하여 ArrayList에 추가하는 루프를 만들려고합니다. 나는 이것을 시도하고 작동하지만 유일한 문제는 루프를 멈추고 값을 받아들이 기 위해 문자 또는 문자열 유형을 입력해야한다는 것이다.arraylist에 사용자 입력 값을 추가하는 방법

다음과 같이 추가 할 루프를 어떻게 설정할 수 있습니까? stop 키워드를 입력하여 사용자가 루프를 중지하지 않고도 필요한 많은 사용자 입력이 가능합니까?

나는 구문 분석 기능을 사용할 수 없으며 사용자에게 입력 할 int의 수를 물어볼 수도 없습니다.

public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 

    ArrayList<Integer> userInput = new ArrayList<Integer>(); 
    System.out.print("enter integers: "); 
    while(in.hasNextInt()){ 
     userInput.add(in.nextInt()); 
    } 


    System.out.print(userInput.get(1)); 
} 
+0

음, 어떻게 * * 사용자가 그들의 입력을 완료 지정 하시겠습니까? – azurefrog

+0

은 입력이 끝난 후 Enter 키만 누르면됩니다. –

+1

모든 입력을 한 줄에 쓰려면 루프 대신에'nextLine()'을 사용하여 입력 줄을 읽은 다음 나중에 구문 분석해야합니다. – azurefrog

답변

-1

귀하의 문제는 사용자가 정수가 아닌 일부 입력을 제공하는 경우에만 중지 할 in.hasNextInt()을 사용하는 것입니다. 사용자가 하나의 입력 만 허용하려면 while 루프를 제거하면 문제가되지 않습니다. 사용자가 두 개 이상의 입력을 제공하기를 원한다면 먼저 얼마나 많은 숫자를주고 싶은지 묻고 그 후에 스캐너에서 많은 시간을 읽으라고 제안합니다.

벨로우 나는 당신에게 나의 제안을하겠습니다.

FULL CODE :

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

    System.out.println("Enter the size:"); 

    int arrSize = reader.nextInt(); 
    ArrayList<Integer> userInput = new ArrayList<>(arrSize); 

    for(int i = 0; i<arrSize; i++) { 

     System.out.println("Enter integer on index "+i+":"); 
     int arrNum = reader.nextInt(); 
     userInput.add(arrNum); 
    } 

    reader.close();   
    System.out.println(userInput.toString()); 
} 
관련 문제