您好我从文件中计算数字时遇到了一些问题。
我的输入是以下rawData.txt
:
19.95
5
输出是这样的:
49.0
57
我的代码如下所示:
import java.util.Scanner;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.PrintStream;
class ReadAndWrite
{
public static void main(String args[])
throws FileNotFoundException {
Scanner diskScanner = null;
diskScanner = new Scanner(new FileReader("rawData.txt"));
PrintStream diskWriter = new PrintStream("cookedData.txt");
double total;
double unitPrice = diskScanner.findWithinHorizon(".", 0).charAt(0);
System.out.println(unitPrice);
int quantity = diskScanner.findWithinHorizon(".", 0).charAt(0);
System.out.println(quantity);
total = unitPrice * quantity;
diskWriter.println(total);
diskScanner.close();
}
}
最终cookedData.txt
文件包含数字2793.0
请帮忙
答案 0 :(得分:1)
您只获取每一行的第一个字符 - 因为charAt(0),然后将其强制转换为double(将char转换为double !!)
我无法理解你想要做什么,但是使用强制转换将char转换为double几乎总是不应该做的。
尝试使用Double.parseDouble。在这里看到:https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble(java.lang.String)
答案 1 :(得分:0)
diskScanner.findWithinHorizon(".",0).charAt(0);
表示您获取任何字符,因为findWithinHorizon的第一个参数是正则表达式,而“。”意味着一个角色。从该字符串中取出第一个字符,即1. ascii值为1是...... 49。