Java扫描器不断询问输入,直到变量为double或int,或者为空,此时给定默认值

hhic 发布于 2019-03-09 java 最后更新 2019-03-09 14:33 2 浏览

这里是我要求的伪造

1. Take value
2. is value double or int?
3. if so, continue in program
4. else
5. is value empty?
6. if value empty; value=0.08
7. else
8. at this stage, value is not an empty valid, or a valid double or valid int
9. user did it wrong, prompt error
10. jump to step one take value
所以对我来说,这是非常复杂的,即时通讯。 我一直在试图像这样提示它;
while ( costscan.hasNext() )
  {
    double costperkm = costscan.nextDouble();
    if (costperkm=double){
      System.out.println("Value is double");
      System.out.println("FUEL COST SAVED ");
    }
    else {
            if(costperkm=null){
               costperkm=0.08;
          }
            else{
}
    System.out.println("FUEL COST SAVED ");
         }
    System.out.print("\n");
    System.out.print("\n");
  }
我上面的代码是玩这个游戏的结果,所以在这个阶段它可能不再有意义了。希望有人能帮忙,谢谢。
已邀请:

qquod

赞同来自:

hasNextDoublenextDouble的问题在于,只要用户按下回车键,他们就会继续要求输入。 如果您想在用户只需按Enter键时使用默认值,则应该使用Scanner.nextLineDouble.parseDouble,因为nextLine是唯一接受空输入的下一个方法。 这是一个可能的解决方案:

String input;
while(true) {
    input = costscan.nextLine();
    if(input.isEmpty()) {
        input = "0.08";
        break;
    }
    if(isParseable(input)) {
        break;
    }
    System.out.println("ENTER ONLY NUMBERS [DEFAULT 0.08]");
}
double costperkm = Double.parseDouble(input);
方法isParseable如下所示:
private static boolean isParseable(String str) {
    try {
        Double.parseDouble(str);
        return true;
    } catch(NumberFormatException e) {
        return false;
    }
}