号码转换为其他号码

时间:2016-01-08 10:47:48

标签: java numbers filereader

您好我从文件中计算数字时遇到了一些问题。

我的输入是以下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

请帮忙

2 个答案:

答案 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);

表示您获取任何字符,因为findWithinHorizo​​n的第一个参数是正则表达式,而“。”意味着一个角色。从该字符串中取出第一个字符,即1. ascii值为1是...... 49。