2011-11-13 3 views
1
(Scanner Input=new Scanner(System.in)) 

Input.hasNext() 조건을 가진 프로그램에서 while 루프가 있습니다. Input.nextLine();Input.nextLine();Input.nextLine();Input.nextLine();.next().next().next().next().next().next().next().next().next().next().next().next().next().next().next().next().next().next().next() 한 줄을 읽은 후 while 루프를 끊을 수있는 방법 또는 while 루프를 입력하여 중단 할 수있는 방법은 무엇입니까? 개행 문자?hasNext() 조건을 가진 루프를 멈춘다.

while (Input.hasNext()) { 
    if (Input.hasNextFloat()) { 
     Grade=Input.nextFloat(); 
     P.setGrades(Grade); 
     j=0;k=1; 
     continue; 
    } 
    if (k==1) { 
     P.getGPA(); 
     P=new Person(); 
     k=0; 
    } 
    if (j==1) { 
     P.setLastName(Input.next()); 
     continue; 
    } 
    P.setFirstName(Input.next()); 
    i++; 
    j=1; 
} 

답변

0

만 1 개 라인 1 개 라인에서 읽고, 행이에 대한

String line = Input.nextLine(); 
Scanner lineScanner = new Scanner(line);//Scanner can also work on a String instead of a InputStream 
while(lineScanner .hasNext()){ 
    if(lineScanner .hasNextFloat()){ 
     Grade=lineScanner .nextFloat(); 
     P.setGrades(Grade); 
     j=0;k=1; 
     continue;} 
    if(k==1){ 
     P.getGPA(); 
     P=new Person(); 
     k=0;} 
    if(j==1){ 
     P.setLastName(lineScanner .next()); 
     continue;} 
    P.setFirstName(lineScanner .next()); 
    i++; 
    j=1; 
} 
+0

안녕하세요. 감사합니다. –

0

원하는 조건을 테스트하고 break을 사용하여 루프를 종료하십시오.

편집 :

귀하의 의견을 바탕으로, 난 당신이 루프 테스트에서 스캐너를 사용할 수 없다는 것을 말할 것입니다. newline을 공백으로 건너 뛰고 다른 것을 기다립니다. 대신 System.in을 BufferedReader에 랩하고 readLine을 사용하여 다음 사용자 줄을 가져옵니다. 줄이 비어 있으면 (길이가 0 인 경우) 루프 밖으로 나갈 수 있습니다. 그렇지 않으면 스캐너의 행을 줄 바꿈하여 해당 행에 대해 스캐너의 구문 분석 방법을 사용할 수 있습니다.

+0

최대 사용자 수, break.i를 사용할 수 없습니다. false로 만드는 방법을 원합니다. 개행 문자를 입력 할 때 Input.hasNext() 조건을 사용하십시오. –

+0

@wilson - 내 편집 참조. –

0

어떻게 해석해야할까요?

boolean b=true; 
while (Input.hasNext() && b) { 
    if (Input.hasNextFloat()) { 
     Grade=Input.nextFloat(); 
     P.setGrades(Grade); 
     j=0;k=1; 
    } else { 
     String content=Input.next(); 
     if (content.equals("")) { 
      b=false; 
     } else { 
      if (k==1) { 
       P.getGPA(); 
       P=new Person(); 
       k=0; 
      } 
      if (j==1) { 
       P.setLastName(content); 
       continue; 
      } 
      P.setFirstName(content); 
      i++; 
      j=1; 
     } 
    } 
} 

나는 스캐너 클래스에 익숙하지 않지만 다음 줄을 입력하면 다음()이 빈 문자열을 반환한다고 가정합니다.

0

나가기를 원하면 return return; 또는주기 의 다음 반복으로 이동하려면 계속하십시오.

관련 문제