数字转换为其他数字
number converting to other number
您好,我在从文件计算数字时遇到了一些问题。
我的输入如下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
请帮忙
您只获取每行的第一个字符 - 因为 charAt(0),然后将其转换为双精度(将 char 转换为双精度!!)
我不明白你想做什么,但使用转换将 char 转换为 double 几乎总是不是你应该做的。
请尝试使用 Double.parseDouble。在这里查看:https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble(java.lang.String)
diskScanner.findWithinHorizon(".",0).charAt(0);
表示获取任意字符,因为findWithinHorizon的第一个参数是正则表达式,而“.”表示一个字符。从该字符串中获取第一个字符,即 1。1 的 ascii 值是... 49.
您好,我在从文件计算数字时遇到了一些问题。
我的输入如下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
请帮忙
您只获取每行的第一个字符 - 因为 charAt(0),然后将其转换为双精度(将 char 转换为双精度!!)
我不明白你想做什么,但使用转换将 char 转换为 double 几乎总是不是你应该做的。
请尝试使用 Double.parseDouble。在这里查看:https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble(java.lang.String)
diskScanner.findWithinHorizon(".",0).charAt(0);
表示获取任意字符,因为findWithinHorizon的第一个参数是正则表达式,而“.”表示一个字符。从该字符串中获取第一个字符,即 1。1 的 ascii 值是... 49.