2013-10-30 2 views
0
import java.util.*; 

class token { 
public static void main(String args[]){ 
    Scanner input = new Scanner(System.in); 
    Random number = new Random(); 

    System.out.println("Do you want to play again(y/n)? "); 
    String in = input.nextLine(); 

    do{ 
    int num1,num2,sum; 
    num1 = 1+number.nextInt(6); 
    num2 = 1+number.nextInt(6); 

    sum = num1 + num2; 


    System.out.print("Dice 1: "+num1); 
    System.out.print("\nDice 2: "+num2); 
    System.out.print("\nSum: "+sum); 

    if(sum%2==1){ 
     System.out.println("\nYou have lost 1 token."); 
    }else if(sum>10){ 
     System.out.println("\nYou have won 2 tokens."); 
    }else if(sum>11){ 
     System.out.println("\nYou have won 2 tokens."); 
    }else if(sum>12){ 
     System.out.println("\nYou have won 2 tokens."); 
    }else{ 
     System.out.println("\nYou have won 1 token."); 
    } 

    System.out.println("Do you want to play again(y/n)? "); 
    String in1 = input.nextLine(); 
    }while(in == "y"); 

} 
} 

그래서 do while 루프를 사용하려고했지만 불행히도 루프가 전혀 발생하지 않았습니다. 샘플 출력 : 다시 재생 하시겠습니까 (y/n)? y 주사위 1 : 3 주사위 2 : 4 합계 : 7 1 토큰을 잃어 버렸습니다. 다시 재생 하시겠습니까 (y/n)? y자바에서이 프로그램을 루프에 넣는 방법은 무엇입니까?

사용자가 n을 입력하지 않으면 내 프로그램이 계속 반복되기를 원합니다.

답변

2

당신이 입력이 영원히 루프 것 1 시간 동안 "Y"그래서 경우 in의 값을 업데이트하지 않기 때문에 in = input.nextLine();

in.equals("y")

String in1 = input.nextLine();in == "y"를 교체하거나 그렇지 않으면 한 번만 실행됩니다.

+1

사실, 그는 문자열 in1 = input.nextLine();을 in = input.nextLine();으로 대체해야합니다. –

0

당신은 당신의 while 루프에서 반복 입력을 한 다음 종료 조건이 있어야합니다

String in = input.nextLine(); 
do { 
    /* conditional logic */ 
    in = input.nextLine(); 
} while (in.equals("y")); 

의 원인이됩니다 당신이 그것을 당신이 루프 내에서 새로운 문자열마다 그것을 설정하는이 방법, 다음 순서에서 사용하지 마십시오. 대신 사용해야

while(in == "y"); 

를 사용

0

:

while(in.equals("y")); 

== 연산자는 참조를 시험하고있다.

같음은 실제로 문자열의 내용을 검사합니다.

0

당신은

동안 사용해야합니다 (in.equalsIgnoreCase ("N")!);

관련 문제