0

这是我所要求的伪

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");
  }

我上面的代码只是玩弄的结果,所以在这个阶段它甚至可能不再有意义。希望有人能帮忙,谢谢。

4

1 回答 1

0

hasNextDoubleand的问题nextDouble在于,只要用户按下回车键,他们就会一直要求输入。

如果你想在用户简单地按下回车时使用默认值,你应该使用Scanner.nextLinecombine with Double.parseDouble,因为nextLine它是唯一接受空输入的 next-method。

这是一个可能的解决方案:

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;
    }
}
于 2013-04-11T16:33:20.367 回答