2014-09-19 2 views
-2

10 개의 문자열을 포함하는 문자열 배열을 인스턴스화했습니다. 나는 기본적으로 모든 10 개의 문자열이 끝날 때까지 또는 사용자가 종료하기 위해 "q"를 입력 할 때까지 주체 이름을 입력하도록 사용자에게 요청합니다. 이러한 일이 발생하면 String 배열 요소를 printArray 메서드를 통해 인쇄해야합니다. 이것은 지금까지 가지고있는 것이지만, "The Array Elements :"다음에 각 값에 대해 "null"값이 표시되어 총 10 개의 문자열을 구성합니다. 이것은 내가 10 개가 아닌 몇 개의 항목 뒤에 "q"를 입력하면 발생합니다. 나는 "null"값을 없애고 싶습니다. 또한 사용자가 10 번째 항목 다음에 "q"를 입력하지 않으면 10 개의 배열을 표시해야합니다.문자열 배열 루프 인쇄 값 null java

{ 
    // Instantiate a String array that can contain 10 items. 
    String[] array = new String[10]; 

    // Read names of subjects into this array 
    // and count how many have been read in. 
    // There may be fewer than 10. 
    Scanner input = new Scanner(System.in); 

    System.out.println("Please enter a subject name or enter q to quit: "); 
    String subject = input.nextLine(); 
    int i=0; 
    while (!"q".equals(subject)) 
    { 
     array[i]=subject; 
     i++; 


     System.out.println("Please enter a subject name or enter q to quit: "); 
     subject = input.nextLine(); 
    } 
    input.close(); 
    System.out.println("The Array Elements:"); 



    // Call printArray to print the names in the array. 
    printArray(array); 
} 


/** 
* Method printArray prints the String values 
* in a partially-filled array, one per line. Only the 
* significant items in the array should be printed. 
*/ 
public static void printArray(String[] args) 
{ 

    for(String val : args) 
     System.out.println(val); 
} 
+0

그러나 루프가 제대로 작동하지 않는다고 생각합니다. 왜? –

+1

디버거를 사용하는 방법을 배우는 것이 좋습니다. 단계별로 코드를 디버그하고 계속 진행하면서 '종료'및 '제목'및 '입력'변수의 값을 확인하십시오. 당신은 아마 문제를 발견 할 것이다. – assylias

+0

while 루프가 시작되지 않습니다. 왜냐하면 'q "가"q "와 동등하지 않기 때문입니다. – Krease

답변

1
String quit = "q"; 
.... 
    while (!"q".equals(quit)) 

당신은 무엇을 기대합니까? quit은 항상 "q"와 같으므로 루프가 입력되지 않습니다.

subject은 루프에서 변경하는 변수이므로 while (!"q".equals(subject))이 필요합니다.

+0

adony ma shelom kha? –

1
String quit = "q"; 

while (!"q".equals(quit)) 

while(!true) 

그래서 당신은 당신이 선택해야합니다

내가 생각하는 동안 루프 내부에 가지 않을 것 같은 동일

while (!subject.equals(quit)) 
0
for(i=0i<10;i++) 
{ 
    System.out.println(array[i]); 
} 

여기에 전화를 걸면됩니다. 다른 방법으로 배열을 표시하지 마십시오.