当我尝试读取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;
}
答案 0 :(得分:0)
使用逗号作为小数点分隔符,而不是点。 0,6
有效
使用DecimalFormat df = new DecimalFormat("#,#");
答案 1 :(得分:0)
来自文档:
public double nextDouble()
将输入的下一个标记扫描为double。如果下一个标记无法转换为有效的double值,则此方法将抛出InputMismatchException。如果翻译成功,扫描仪将超过匹配的输入。
解析0.6应该有效,但是如果你想输入0,6你可以使用它:
String dstr = scan.nextLine();
dstr = dstr.replace(",", ".");
double f = Double.parseDouble(dstr);
答案 2 :(得分:0)
您的代码只会尝试在main方法中修改这些行:
Scanner scan = new Scanner(System.in);
System.out.println("Enter the double value:\n");
double f = scan.nextDouble();
impl_with_errors list = new impl_with_errors(f);
System.out.println("Enter the integer value:\n");
int n = scan.nextInt();
它应该有用。