1

0.6 を読み取ろうとすると、java.util.InputMismatchException が発生しました。これはコードの一部です。ご覧のとおり、演習シートの SkipList を再実装しようとしています。

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        double f = scan.nextDouble();
        impl_with_errors list = new impl_with_errors(f);
        int n = scan.nextInt();


public class impl_with_errors {
    public static double chance;
    public Node list0;
    public Node list1;
    public Node list2;
    public Node list3;
/**
 * the constructor of the skiplist
 * @param p the chance that an element shall be in a higher list
 */
    public impl_with_errors(double p) {
        chance = p;
        list0 = null;
        list1 = null;
        list2 = null;
        list3 = null;
    }
4

3 に答える 3

0

ドットではなく、コンマを小数点記号として使用します。0,6作品

を使用して double 値をフォーマットします。DecimalFormat df = new DecimalFormat("#,#");

于 2013-12-04T10:40:41.033 に答える
0

ドキュメントから:

public double nextDouble()

入力の次のトークンを double としてスキャンします。次のトークンを有効な double 値に変換できない場合、このメソッドは InputMismatchException をスローします。変換が成功すると、スキャナは一致した入力を超えて進みます。

0.6 の解析は機能するはずですが、0,6 を入力したい場合は、次のように使用できます。

String dstr = scan.nextLine();

dstr = dstr.replace(",", ".");

double f = Double.parseDouble(dstr);
于 2013-12-04T10:53:19.927 に答える