问题描述
这是一个工作测试
Scanner sc = new Scanner("aaaa 1.1 bbb\n3");
sc.useLocale(Locale.US);
while (sc.hasNext()) {
if (sc.hasNextDouble()) {
System.out.println(sc.nextDouble());
} else {
sc.next();
}
}
请注意,我使用了美国语言环境,以使扫描仪插入“。”作为小数点分隔符,在我的语言环境(默认)中为“,”。另请注意,nextDouble可以识别1.1和3(整数)
解决方法
尝试仅在文件包含数字和单词的地方读取双数字。到目前为止,我已经完成的代码可以从文件中正确读取并打印带有数字和单词的完整列表。不知道如何排除单词并打印只读的双精度数字。
public void doubleFromFile()
{
Scanner scan = new Scanner(System.in);
Scanner fileScan;
boolean validName = false;
double num = 0.0;
do
{
System.out.print("Enter file name: ");
String str = scan.nextLine();
try
{
fileScan = new Scanner(new File(str));
validName = true;
while(fileScan.hasNextLine())
{
try
{
str = fileScan.nextLine();
num = Double.parseDouble(str);
System.out.println(str);
}
catch (NumberFormatException nfe)
{
System.out.println("is not a Double number");
}
}//end while
}// end try
catch (FileNotFoundException fnfe)
{
System.out.println("Invalid File name: enter again");
}
}while(!validName);
}//end doubleFromFile method