2014-02-13 2 views
0

여기에 이상한 점이 있습니다. 원인이 무엇인지 모릅니다. 저는 Java로 스피치 데모를 쓰고 있는데, 몇 가지 간단한 프로그램을 작성하고 있습니다. 어떤 이유로 든 바위 종이 가위 프로그램으로 작업 할 때 항상 임의의 숫자를 반환하기를 원하지는 않습니다. 내 시작 코드는 아래에 있으며 매번 3 번 중 하나를 말하면 실제로 숫자가 인쇄됩니다. 난수가 인쇄되지 않음

Random rand = new Random(); 
int randomNum = rand.nextInt(3) + 1; 
System.out.println(randomNum); 

나는 매우 간단한 코드, 말했듯이,하지만 난 단지 때때로 번호를 인쇄하는 이유에 대한 단서 ...

편집이 없다 : 전체 프로젝트

홈페이지 수입 자바. util.Scanner; 문제는 당신의 루프에서 때마다, 전화 할 것을

import java.util.Random; 


public class Rock_Paper_Scissors { 
public static void start(){ 
    System.out.println(random()); 
} 
private static int random(){ 

    Random rand = new Random(); 
    int randomNum = rand.nextInt() + 1; 
    return randomNum; 
} 
} 
+0

1-3 사이에 아무 것도 인쇄하지 않습니다. – Kick

+3

항상 숫자를 인쇄합니다. 왜 그럴까? 여기에 우리에게 보여주지 않는 뭔가가있을 수 있습니다. –

+0

내 랩톱인지 아닌지는 잘 모릅니다. 하지만 이클립스 내에서 실행하고 그것을 수출하고 명령 프롬프트에서 실행. 그것은 내가 그것을 부른 매 3 번만 결과를 준다. – Kristoff

답변

5

public class Speech_Main { 

public static void main(String[] args) { 
     boolean running = true; 
     Scanner in = new Scanner(System.in); 


     while(running){ 
      if(in.next().equalsIgnoreCase("exit")){ 
       running = false; 
      } 
      if(in.next().equalsIgnoreCase("Hello_World")){ 
       Hello_World.start(); 
      } 
      if(in.next().equalsIgnoreCase("rps")){ 
       Rock_Paper_Scissors.start(); 
      } 
     } 
     in.close(); 
     return; 
} 

} 

RPS in.next() 세 번 :

첫 번째 if에 도착하면, 당신은 in.next() 전화
while(running){ 
     if(in.next().equalsIgnoreCase("exit")){ 
      running = false; 
     } 
     if(in.next().equalsIgnoreCase("Hello_World")){ 
      Hello_World.start(); 
     } 
     if(in.next().equalsIgnoreCase("rps")){ 
      Rock_Paper_Scissors.start(); 
     } 
    } 

, 스캐너에서 다음 토큰을 가져옵니다. 문제는 두 번째 if에 도착하면 in.next()을 다시으로 호출하여 다른 토큰을 가져 오는 것입니다. 당신이 새로운 것을 얻기 위해 말했기 때문에 그것은 이전 것을 사용하지 않습니다.

String input = in.next(); 

을 다음 변수를 확인 :이 문제를 해결하려면, 변수는 루프의 시작 부분에 in.next()를 개최 선언합니다.

+0

고마워요! 나는 그것이 단순한 문제라는 것을 알았다. 저는 연설을위한 BS 프로그램으로이 글을 쓰고 있습니다 만, 그것을 깨닫지 못했습니다. – Kristoff

관련 문제