2017-07-07 44 views
1
final int MAX_ROUNDS = 5; 
String name1,name1; 

Scanner keyboard = new Scanner(System.in); 
System.out.println("Please enter player1 name: "); 
name1 = keyboard.nextLine(); 
System.out.println("Please enter player2 name: "); 
name2 = keyboard.nextLine(); 
Player player1 = new Player(name1); 
Player player2 = new Player(name2); 

Dealer dealer = new Dealer(); 

    for(int count = 1; count <=MAX_ROUNDS; count++) 
    { 
     System.out.println("------------------"); 
     System.out.ptintf("Round : %d",count); 
     dealer.rollDice(); 
     player1.makeGuess(); 
     player2.makeGuess(); 
     roundResults(); 

摘录自属于Player类的makeGuess方法。是否可以在Java中的方法内声明一个扫描器变量来读取键盘输入?

public void makeGuess() 
{ 
Scanner keyboard = new Scanner(System.in) 

System.out.printf("Please guess 'even' or 'odd' "+ 
     "%s.", name); 
String answer = keyboard.nextLine(); 

     if(answer.equalsIgnoreCase("even") 
      guess = "Cho (even)"; 
     else 
      guess = "Han (odd); 
    } 

当方法执行时我没有被提示任何东西我不明白为什么我没有包含程序的所有内容。只是想知道如果任何人眼睛这个代码可以看到明显的东西,否则,我会拿出猜测提交。

+0

你确定你正在运行已编译的东西吗?在makeGuess函数中,如果检查答案的话会有一个缺失)。 –

+1

无论如何,你不应该在每种方法中创建一个扫描仪。创建一次扫描程序并将其作为参数传递给需要它的方法。 –

+0

是的,我在程序执行前修复了缺失的花括号。所以在这些情况下,我应该将Scanner对象传递给方法。我只需要一个import语句,然后在我的主类中创建对象,然后将其传递给makeguess方法。感谢你的帮助与东西。仍然没有提示我输入我会尝试一些事情。 – needyPheonix

回答

0

虽然我无法找到任何你的代码错误,如果我不得不采取一个受过教育的猜测,该dealer.dice()方法可能有一个无限循环,这是造成你的整个程序发生故障

0

有你试图打印出从扫描仪获取其值的变量name1,name2等变量,看它是否工作?将它们的值设置为keyboard.nextLine()后立即尝试执行此操作。这应该让你更好地了解问题所在。

+0

我想出了我没有从makeGuess()获得预期结果的原因。我有两个球员课程,我正在研究的主要方法程序碰巧正在引用其他球员类/ makeGuess()。所以我正在更新猜测,但没有发生。我修好了,它现在可以工作。并学会了如何将Scanner对象作为参数而不是创建一个新参数。 – needyPheonix

相关问题