2015-01-22 2 views
1

사용자가 숫자 대신 x을 입력 할 때까지 내 프로그램 루프를 만들고 싶습니다. while 문을 사용하여 시도했지만 여러 변수와 함께 사용하는 방법을 모르겠습니다. 여기 내 코드는x를 입력 할 때까지 Java 프로그램 루프를 만드시겠습니까?

public static void main(String[] args) 
{ 
    int denominatorOne = 1, numeratorOne = 1; 
    System.out.println("Welcome, type an \"x\" at any point to exit the program"); 
    while (numeratorOne !=x) 
    { 

     Scanner in = new Scanner(System.in); 


     //Prompt the user for fraction one 
     System.out.print("Enter the first numerator (top number): "); 
     numeratorOne = in.nextInt(); 

     System.out.print("Enter the first denominator (bottom number): "); 
     denominatorOne = in.nextInt(); 
    } 
} 

내 할당에서 정확한 말씨는) 그냥 (주이 경우 다시 통해 메소드를 호출 할 수 The program should run in loop and allow the user to exit with some special character input (e.g. x or X to exit)

+3

로 변경합니다'x'가 숫자가 아닌 ... – MadProgrammer

+0

은 'X'는 정수는 따라서 아니다 입력을 문자열로 읽지 않으면 여기서 센티널 값이 될 수 없습니다. if (input.equals ('x')) break;를 호출하고 그렇지 않으면 Integer.parseInt (input);을 수행 할 수 있습니다. – SpencerD

+0

WrapperClass에 대해 알고 계십니까? 입력이 정수가 아니면 구문 분석을 시도하여 사용자가 다른 형식을 입력했는지 확인하여 예외가 발생하면 루프를 잡아서 종료하십시오 ... – Abubakkar

답변

1

;입니다

그러나 내가 제안하는 방법은 입력을 문자열로 반환하는 사용자 입력을 확인하는 메서드에서 새 메서드를 만드는 것입니다. 그런 다음 main 메소드에서 문자열을 검사 할 수 있습니다. 원하는 문자열이 아니라면 메소드를 호출하십시오. 여기에 예제가 있습니다. IDE를 사용하지 않았습니다.

public String getMessage(){ 
Scanner input = System.in(); 
return input; 
} 

public void checkMessage(String wantedString){ 
if(!getMessage().equalsIgnoreCase(wantedString)){ 
System.out.println("Please retry"); 
checkMessage(); 
} 
} 

public static void main(String[] args){ 
checkMessage(); 
} 
+0

'if (! getMessage.equalsIgnoreCase (wantedString)) {'getMessage는 메소드가 아니라 변수입니다! – Victor2748

+0

내가 말했듯이, 나는 이것을 위해 IDE를 사용하지 않았다. 그래서 나는 그 괄호를 잊었다. 그것에 대한 사과. – MrExporting24

1

은 무엇을 당신이해야 할 것은 루프를 보유하고 루프 = 사실

동안

부울 루프를를 keyDown 이벤트에 대한 if 문 체크가있을 때 (루핑 부울 값을 가질 수있다 == TRUE) {

(X 버튼을 누를 경우 == TRUE)

반복 {} = 거짓

}

4

는 첫째, 'X'는 숫자가 아닌이고, 당신이 다음 INT가있는 경우 (in.hasNextInt())를 참조하기 위해 검사를 시도한다 nextInt 또는 'X'로 비교에 의해 허용되지 않습니다 프로세스에 따라 다릅니다. 이 점 외에도 while 루프에서 두 변수를 쉽게 테스트 할 수 있습니다. 당신이 변수를 설정 가정하면 바로 문자로 :

do { 
    // scan code. 
} while(!(numChar1.equals('x') && numChar2.equals('x'))) 
1

while(!numeratorOne.equals("x")){...} 
관련 문제