2014-04-09 6 views
-1

이것은 첫 번째 게시물입니다.루프를 실행하여 프로그램을 반복하거나 종료 할 읽기 사용자 입력을 생성하십시오.

스캐너 클래스를 사용하여 프로그램을 반복하거나 종료하도록 사용자 입력을 허용하려고합니다. 문제는 Do 루프 문이 프로그램을 반복하고 Do 루프가 false이고 프로그램을 종료해야하는 경우에도 종료되지 않습니다.

// loop repeat or quit 
do { 
//initialize variable 
    int integer; 
    int x = 1; 
    int factorial = 1; 

System.out.print("Please enter an integer \n"); 
integer = getInt.nextInt(); 
//loop for factorial 
//multiple each increment until it reaches the integer 
while (x <= integer) { 

    factorial *= x; 
    x++; 

}; // factorial=x*x 
    System.out.println("the factorial of the integer " + integer + " is " + factorial); 

System.out.print("do you want to quit? y or n \n"); 
quit = getString.next(); 


} while(quit != yes); 


System.exit(0); 
} 
+0

이 코드도 컴파일되지 않을 것이라는 점을 무시하고, [I 자바에서 문자열을 비교하려면 어떻게합니까?] (의 중복 가능성 http://stackoverflow.com/questions/513832/how-do-i-compare- strings-in-java) –

+0

@ user3502443 OP 선택한 해결책의 왼쪽에있는 체크 표시를 클릭하여 정답을 선택하십시오. –

답변

0

가되지는

while(quit != "y"); 

나는 또한 우리가있어 이후 System.out.pritnln();

또한 완벽하게 좋은이 때, \ n 사용 다음 System.out.print();을 사용하는 이유를 이해하지 않습니다이어야한다 문자열 다루기 .nextLine(); 스캐너에 충분합니다. (문자열을 종료한다고 선언해야합니다.)

0

코드에 몇 가지 실수가 있었기 때문에 실수로 사용한 코드를 사용하여 올바르지 않은 함수를 사용했습니다. 내가 코멘트를 희망

public static void main(String args[]) 
    { 
    // Scanner is used to take in inputs from user 
    Scanner scan = new Scanner (System.in); 
    String quit = ""; 

    // loop repeat or quit 
    do { 
     //initialize variable 
     int integer = 0; 
     int x = 1; 
     int factorial = 1; 

     // User needs to enter integer, or it'll throw exception. 
     System.out.println("Please enter an integer"); 
     integer = scan.nextInt(); 

     //loop for factorial 
     //multiple each increment until it reaches the integer 
     // factorial = x! 
     while (x <= integer) { 
      factorial *= x; 
      x++; 
     }; 

     System.out.println("the factorial of the integer " + integer + " is " + factorial); 
     System.out.println("do you want to quit? y or n"); 
     quit = scan.next(); 

     // if quit is NOT equal to y, we do it again 
    } while(!quit.equals("y")); 

    System.exit(0); 
} 

도움이 : 난 당신의 코드를 편집했고 지금 실행

+0

고마워요. – user3502443

0

.

나중에 참조 용으로 : 코드 시청자가 실수를 쉽게 발견 할 수 있도록 포괄적 인 스 니펫을 포함하십시오.

문제 : 사용자가 공백없이 y 입력 만 할 수있는 방법은 없습니다. 이 문제에 대한 쉬운 해결책은 문자열 메서드 을 사용하는 것입니다. 사용자 입력을하면 프로그램이 종료되고 이제는 작동하도록 루프를 수정했습니다. 이 코드가 작동하고 행복하게 코딩되는지 알려주세요!

public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 
     String quit =""; 

     do { //initialize variable 
      int integer; int x = 1; int factorial = 1; 

      System.out.print("Please enter an integer \n"); 
      integer = in.nextInt(); 
      //loop for factorial 
      //multiple each increment until it reaches the integer 
      while (x <= integer) { 

       factorial *= x; 
       x++; 

       }; // factorial=x*x 
       System.out.println("the factorial of the integer " + integer + " is " + factorial); 

       System.out.print("do you want to quit? y or n \n"); 
       quit = in.next(); 


       } while(!quit.contains("y")); 


       System.exit(0); 


    } 
+0

왜이 문장을 사용할 수 없습니까? "(quit! ="yes ")". 올바른 구문을 사용합니다. 그리고 내 마음 속에는 논리적으로 정확합니다. – user3502443

+0

그럴 것입니다. 문제는 당신이 고려하지 않은 공백 문자가있을 수 있다는 것입니다. –

관련 문제