我想从一个读取数据txt
文件,但我得到InputMismatchException
当我打电话时nextDouble()
方法。即使我正在使用useLocale
方法,但是不起作用。
txt文件第一行是:1;forname;1.9
public class SimpleFileReader {
public static void main(String[] args){
readFromFile();
}
public static void readFromFile(){
try {
int x = 0;
File file = new File("read.txt");
Scanner sc = new Scanner(file).useDelimiter(";|\\n");
sc.useLocale(Locale.FRENCH);
while (sc.hasNext()){
System.out.println(sc.nextInt()+" "+sc.next()+" "+sc.nextDouble());
x++;
}
System.out.println("lines: "+x);
} catch (Exception e) {
e.printStackTrace();
}
}
}
归咎于法语语言环境:它使用逗号作为小数点分隔符,所以1.9
无法解析。
更换1.9
with 1,9
解决了问题(demo 1 http://ideone.com/IusD9m)。如果你想解析1.9
, use Locale.US
代替Locale.FRENCH
(demo 2 http://ideone.com/YPLvLu).
代码中的第二个问题是使用\\n
作为分隔符。您应该使用单个反斜杠,否则包含的单词n
会破坏你的解析逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)