2016-04-28 12 views
0

私は2つの数字を入力すると仮定します.1つはintを引っ込める量で、もう1つは残高です(間にスペースを入れます)。撤回ごとに0.5の手数料を請求するので、バランスは2倍にする必要があります。そしてそれは何が印刷されなければならないのですか。 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のデフォルト設定を英語のUSに変更しました。小数点以下は問題なし。 [行う方法](https://stackoverflow.com/questions/4947484/how-to-set-eclipse-console-locale-language) – Nooblhu

0

読むためにいくつかのintまたはダブルがある場合は、チェックすることができ そして、あなたが使用する必要があり、またはに応じて。国は、あなたです。 必要な場合は、国ind文字列として読んで解析する(以下を参照)

解決策は、行を文字列として読み込み、intとdoubleに解析することです。ダブルが利用可能であるかどうかの確認

:Stringとして

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 , 

十分な入力がある場合にもチェックすることができます。

関連する問題