2016-04-28 113 views
0

我想输入2个数字,一个是要退出的数量,另一个是余额(它们之间有一个空格)。由于每次提款收取0.5的费用,余额必须是双倍。那是什么必须打印。 我在nextDouble时出错,为什么?我刚才1个月编码,我认为这将是一块蛋糕,我觉得基本语法30年前毁了我:(为什么从Scanner方法的nextDouble()向我发送“异常”

import java.util.Scanner; 

public class Test { 

public static void main(String[] args) { 
    //init variables 
    int amount; 
    double balance; 
    //insert amount and balance 
    Scanner input = new Scanner (System.in); 
    amount = input.nextInt(); 
    balance = input.nextDouble(); 
    //reduce amount+fee from balance 
    balance=balance-(amount + 0.50); 
    //print new balance 
    System.out.print(balance); 
    input.close(); 
} 
} 
+0

你给的是什么输入?还有什么是你得到的确切例外。 – Codebender

+1

输入为“。”(点)小数点,但我的IDE设置为“,”(逗号)。我已经足够年纪了,当我们在我的国家改变成数学的逗号时,我仍然使用点。更改IDE配置来解决。 – Nooblhu

回答

2

它是依赖于语言环境,尽量用逗号,而不是点或反之亦然

例:的1,5代替1.5

+0

是的,我试图使用语言环境,但然后我不得不转换为字符串,我不想要的,所以我改变了我的Eclipse默认设置为英文美国使用“。”。小数没有问题。 [如何做到这一点](https://stackoverflow.com/questions/4947484/how-to-set-eclipse-console-locale-language) – Nooblhu

0

您可以检查,如果有一些int或double阅读 你必须使用,或取决于。国家,你是。 如果你需要它的国家ind依赖,阅读它作为字符串,然后解析(见下文)

一个solication将读取行作为一个字符串,然后解析它然后int和double。

检查是否双可用:

input.hasNextDouble(); 

读为字符串:

String line = input.nextLine(); 
String[] sl = line.split(" "); 
amount = Integer.parseInt(sl[0]); 
balance = Double.parseDouble(sl[1]); //solve the problem with . and , 

你也可以检查是否有足够的投入。

相关问题