2017-04-19 62 views
-1

最近,我測試了自己對Java,所以我沒有太多的經驗。這就是爲什麼我不知道該如何處理這個錯誤。現在更準確地說,下面的代碼在使用命令提示符或Eclipse編譯它之後,仍然可以在一些隨機的android java編譯器上完美工作,工作部分在掃描程序結束。該程序完全忽略了第一次嘗試實現輸入,第二次嘗試輸入這個錯誤。InputMismatchException while using Scanner

Exception in thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at java.util.Scanner.nextDouble(Unknown Source) 
at Kalkulator.main(Kalkulator.java:14) 

代碼:

import java.util.Scanner; 
public class Kalkulator{ 
public static void main(String[] args){ 
double a,b; 
System.out.println("wprowadz 2 liczby"); 
System.out.println("\"format:(x, x)\""); 
Scanner dane = new Scanner(System.in).useDelimiter("\\s*,\\s*"); 
a = dane.nextDouble(); 
b = dane.nextDouble(); 
System.out.println("\n"+"Podałeś "+a+" oraz "+b+"."); 
if (a%2 == 0){ 
System.out.println("\n"+a +" text"); 
} 
else{ 
System.out.println("\n"+a +" text"); 
} 
if (b%2 == 0){ 
System.out.println(b +" text"); 
} 
else{ 
System.out.println(b +" text"); 
} 
double wieksza, mniejsza; 
if (a > b){ 
wieksza = a; mniejsza = b; 
} 
else { 
wieksza = b; mniejsza = a; 
} 
System.out.println("Liczbą większą jest "+wieksza); 
System.out.println("Liczbą mniejszą jest "+mniejsza); 
dane.close(); 
} 
}` 
+1

你叫,下一個輸入未解析的爲'double'。如果輸入位於兩條單獨的行上,則需要調用nextLine()移至下一個輸入行。 –

回答

0

下面是使用列出瞭解決方案:`nextDouble()`

import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 

public class Kalkulator { 
    public static void main(final String... args) { 
    System.out.println("enter any number of doubles, whitespace delimited. enter a non-double token to quit"); 
    final List<Double> doubles = new ArrayList<>(); 
    try (final Scanner dane = new Scanner(System.in)) { 
     while (dane.hasNextDouble()) { 
     final double input = dane.nextDouble(); 
     doubles.add(input); 
     System.out.println(String.format("Read [%f]", input)); 
     } 
    } 
    System.out.println(String.format("finished reading user input. %d doubles read.", doubles.size())); 
    System.out.println(String.format("Largest input: %f", doubles.stream().reduce(Math::max).orElse(0D))); 
    System.out.println(String.format("Smallest input: %f", doubles.stream().mapToDouble(d -> d).min().orElse(0D))); 
    } 
} 
相關問題