在Java中使用Scanner时更正运行时错误

时间:2015-11-15 22:42:37

标签: java

我有一项作业,我必须完成学校制作GPA计算器。它共有三个类。在我正在上课的课程中,我们必须设置多种方法。我这个特殊的方法,即“readGradeCount”方法,用户应该输入他们想要为GPA计算的等级数。用户应该输入一个正数和一个大于零的数字。我必须验证这个用户输入,所以我决定通过使用循环来做到这一点。当我运行代码时,它给了我以下

java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q�\E][infinity string=\Q∞\E]

我不知道这意味着什么,我已经尝试了很多东西来解决它,但我做不到。这是我的方法代码:

public static int readGradeCount()
{
  int count;
  Scanner keyboard;
  keyboard = new Scanner(System.in);

  do
  {
    System.out.print("How many grades? ");
    while(!keyboard.hasNextInt())
    {
      System.out.print("Bad value- " + keyboard + "\n");
      keyboard.next();
      System.out.print("How many grades? ");

    }
    count = keyboard.nextInt();
  }    
  while (count <= 0);

  return count;
}

用户输入的值应该出现在短语“Bad value-”之后,但我得到了这一行。有什么建议?谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

您正在Scanner keyboard语句中打印println,尝试使用keyboard.next()中的println,然后删除程序中的keyboard.next()

答案 1 :(得分:1)

您正在打印扫描仪,这会产生一个非常奇怪的字符串。尝试先捕获键盘的值并打印出来。

abstract class Order {

    abstract void makePayment(PaymentObj);
}

//hibernate entity
class OrderType1 extends Order{
    //override
    makePayment() {

    }
}

// hibernate entity
class OrderType2 extends Order {
    // override
    makePayment() {

    }
}