程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-Java Scanner類使用時產生的一個錯誤,求解

java-Java Scanner類使用時產生的一個錯誤,求解

編輯:編程綜合問答
Java Scanner類使用時產生的一個錯誤,求解

package upper_test;
import java.util.*;
public class Scanner_00 {

int a;
long b;
float c;
String d;
Double e;
public Scanner_00(String x){
Scanner s=new Scanner(x);
a=s.nextInt();
b=s.nextLong();
c=s.nextFloat();
d=s.nextLine();
e=s.nextDouble();
}

public static void main(String[] args) {

    // TODO Auto-generated method stub
    Scanner_00 m=new Scanner_00("1231\n123\n1.23\nccasda\n12333.353\n");

}

}
報錯為
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 upper_test.Scanner_00.(Scanner_00.java:17)
at upper_test.Scanner_00.main(Scanner_00.java:24)
求解!反復換過double格式都不行,貌似不是格式問題

最佳回答:


前面說錯了。翻了下文檔,Sacnner類的nextLine方法是這樣的:
public String nextLine()
此掃描器執行當前行,並返回跳過的輸入信息。 此方法返回當前行的其余部分,不包括結尾處的行分隔符。當前位置移至下一行的行首。
對於
"1231\n123\n1.23\nccasda\n12333.353\n"
nextFloat()之後,光標停留在1.23之後,\nccasda之前,因此調用readLine()讀到的是一個空字符串
之後readDouble()的時候讀到了"ccasda",於是導致異常

u013127937
u013127937
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved