2013-10-21 18 views
2
import java.util.Random; 
import java.util.Scanner; 

public class addinggamedowhile 
{ 
    public static void main (String[]args) 
    { 
     Random r = new Random(); 
     Scanner s = new Scanner(System.in); 
     int x = r.nextInt(20)+1; 
     int y = r.nextInt(20)+1; 

     int sum = x + y; 
     int guess; 
     System.out.println("==========="); 
     System.out.println("Adding Game"); 
     System.out.println("==========="); 
     System.out.println(); 

    int tries = 0; 
    for (int games = 0; games < 10; games++) 
    { 
     do 
     { 
     System.out.print (x + " + " + y + " = "); 
     guess = s.nextInt(); 

     if (guess != sum && tries < 2) 
     { 
     System.out.println("Not quite. Try again!"); 
     System.out.println(); 
     tries++; 
     } 
     else 
     System.out.println("Not quite. The answer is " +sum+ "."); 
     System.out.println(); 
     } 
    while (guess != sum); 
    System.out.println("Congratulations. You got it!"); 
    System.out.println(); 
} 

}} 

이 루프에 문제가 있습니다. 내가 원할 때 루프를 종료 할 수 없습니다. 단지 10 개의 "추측"만으로 끝나기로되어 있습니다. 또한, 사용자가 질문을 바로 잡으면 my else 문도 실행됩니다. 다른 하나는 사용자가 올바른 질문을 얻거나 3 번에 올바른 질문을 얻지 못하면 새로운 숫자가 나타납니다. 나는 그것을 제대로 수행 할 수 없었습니다. 나는 잘 작동하는 다른 것들을 시도했지만, 프로젝트에 대한 요구 사항은 do while 루프를 사용하는 것이다.루프가 제대로 작동하지 않습니다.

+0

언제 'while (guess! = sum)'입니까? 'tries ++ ' –

+0

언어에 대한 태그를 넣는 것을 잊지 마시고 여기에서 들여 쓰기를 수행하십시오. 코드는 그대로 읽기가 어렵습니다. – crashmstr

답변

2

어때?

do { 
    //your code here 
} while (guess != sum && tries <= 10); 

루프는 합계가 정확하거나 시도 횟수가 모두 사용될 때까지 계속됩니다. Increment는 루프가 반복 될 때마다 하나씩 시도합니다.

그런 다음 완료 후 (즉 루프 외부) 추측이 정확한 합계인지 또는 시도가 고갈되었는지를 확인하고 그에 따라 응답을 인쇄하십시오.

0

추측이 맞거나 더 이상 시도하지 않으면 break 키워드를 사용할 수 있습니다. 또한, 아마도 for 반복문 안의 try 변수를 재설정해야한다. (그래서 각 게임의 시작 부분에서 초기화된다.)

관련 문제