我正在尝试将导入文件String数据类型转换为Double并进行计算,但发现了一些错误。做出假设时有任何错误吗?
import java.io.*;
import java.util.*;
import java.lang.*;
public class Q4
{
public static void main (String [] args) throws IOException, NumberFormatException
{
File file = new File("SalesData.txt");
Scanner inputFile = new Scanner (file);
while (inputFile.hasNext())
{
String weekly_Sale = inputFile.nextLine();
String sale = weekly_Sale;
String list = sale;
Double value = Double.parseDouble(list);
Double[]data = value.split(",");
System.out.println(data);
}
inputFile.close();
}
}
文件SalesData.txt包含零售店每天销售的美元销售额数周。文件中的每一行包含七个数字,即一周的每日销售额。数字用逗号分隔。以下是文件中的示例:
2541.36,2965.88,1965.32,1845.23,7021.11,9652.74,1469.36
编写一个打开文件并处理其内容的程序。该程序应显示以下内容:
•每周的总销售额 •每周的平均每日销售额 •所有周的总销售额 •平均每周销售额 •销售额最高的周数 •销售额最低的周数
答案 0 :(得分:2)
需要指出的各种事项:
正如我之前评论的那样,Double
没有分割方法,你不能直接解析为2541.36,2965.88,1965.32...
最好使用BufferedReader而不是Scanner来读取文件,因为它是 a bit faster
您的代码可以缩短为:
try (BufferedReader br = new BufferedReader(new FileReader("SalesData.txt"))){
String currentLine;
// read each line until the end of the file
while ((currentLine = br.readLine()) != null){
// split each token to a double-parseable string value, then parse it to a double and finally
// collect those values into an array of doubles
double[] data = Arrays.stream(currentLine.split(",")).mapToDouble(Double::parseDouble).toArray();
System.out.println(Arrays.toString(data));
}
} catch (java.io.IOException e) {
e.printStackTrace();
}
为此,我正在使用Java 8 Stream API。
答案 1 :(得分:1)
Double value = Double.parseDouble(list);
Double[]data = value.split(",");
您的操作顺序不正确。首先,您需要将行拆分为单独的字符串值,然后将它们解析为double。
尝试这样的事情
String[] data = value.split(",");
for (String item : data) {
Double result = Double.parseDouble(item)
// Do Stuff
}
答案 2 :(得分:0)
试试这个
mtcars_filtered()[, c(input$results_columns_selected)]