2017-09-22 12 views
1

이 문자는 question에 해당하며 다시 작성하지만 정수 대신 문자열 배열로 채 웁니다. 내가 초보자이고 배열로 더 연습하고 싶기 때문에 ArrayList가 아니라 배열을 사용하고 싶습니다. 나는 코드를 꽤 많이 복사했지만 출력에 오류가 계속 발생합니다.for 루프를 사용하여 들쭉날쭉 한 배열에 문자열을 저장하십시오.

Scanner input = new Scanner(System.in); 
    System.out.print("Enter number of arrays: "); 
    int x = input.nextInt(); 
    String [][] array = new String[x][0]; 

    for(int i = 0; i < x; i++){ 
     System.out.print("Enter number of elements for array: "); 
     int s = input.nextInt(); 
     array[i] = new String[s]; 

     for(int j = 0; j < s ; j++){ 
      System.out.print("Enter string: "); 
      String word = input.nextLine(); 
      array[i][j] = word; 
     } 
    } 

내 출력은 다음과 같습니다 :

Enter number of arrays: 2 
Enter number of elements for array: 3 
Enter string: Enter string: hello 
Enter string: hi 
Enter number of elements for array: 2 
Enter string: Enter string: goodbye 

은 왜 "문자열을 입력"인쇄 않습니다 때마다 두 번 여기 내 코드는? 논리가 나에게 의미가 있으므로 잘못된 결과를 초래하는 것이 확실하지 않습니다. 그것은 for 회 돌이인가 아니면 문자열이 작동하는 방식일까요? 코드에 대한 설명과 도움을 주시면 감사하겠습니다. 감사합니다

답변

1

로직은 정확하지만 그 뒤에 입력하는 'Enter'문자가 아닌 nextInt() 메서드는 숫자 만 읽습니다. 따라서 nextLine() 메서드를 호출하면 루프에서 처음으로 'enter '문자, 두 번째 입력 및 3 번째 입력을 읽습니다.

for(int i = 0; i < x; i++){ 
    System.out.print("Enter number of elements for array: "); 
    int s = input.nextInt(); 
    input.nextLine(); 
    array[i] = new String[s]; 

    for(int j = 0; j < s ; j++){ 
     System.out.print("Enter string: "); 
     String word = input.nextLine(); 
     array[i][j] = word; 
    } 
1

문제는 input.nextInt은() 아무튼 단지이다 : 그것은 대기중인 문자를 읽어 thath 있도록 이 문제를 방지하려면, 변수에 할당하지 않고, 단지 nextInt()nextLine()를 호출 할 수 있습니다 줄 바꿈을 잡아라. 각 input.nextInt() 행 다음에 input.nextLine()을 붙이면 작동 할 것입니다.