Java 如何从包含多个数据类型的文本文件中进行输入
这里的Java新手,我有一个问题,我的头撞在墙上已经好几个小时了 基本上,我需要读取一个包含String、Integer和Double数据类型的文本文件。(文件见下文) 文本格式为两行。第一行只是产品名称,第二行是一个整数,表示工厂编号,然后是4位小数,表示四家工厂中一家的销售额,单位为百万美元Java 如何从包含多个数据类型的文本文件中进行输入,java,file,input,types,Java,File,Input,Types,这里的Java新手,我有一个问题,我的头撞在墙上已经好几个小时了 基本上,我需要读取一个包含String、Integer和Double数据类型的文本文件。(文件见下文) 文本格式为两行。第一行只是产品名称,第二行是一个整数,表示工厂编号,然后是4位小数,表示四家工厂中一家的销售额,单位为百万美元 CrossTrainMax 1 15.1 12.8 3.14 2.3 AirGlider 3 12.2 4.6 6.5 8.3 AquaWalker 2 3.82 1.75 7.6 6.38 Super
CrossTrainMax
1 15.1 12.8 3.14 2.3
AirGlider
3 12.2 4.6 6.5 8.3
AquaWalker
2 3.82 1.75 7.6 6.38
SuperHike
1 9 11.2 7.5 8.4
第一个值是产品的名称。一位数整数是生产它的工厂编号。十进制数字是该产品的销售额,单位为百万美元,用空格分隔
我的计划是将产品名称作为字符串读入,然后将整数值用作SWITCH语句。
(每个工厂的利润百分比是不同的,所以我认为解决这个问题的最佳方法是在switch语句中计算总利润。)
在我得到每个产品的总销售额后,我必须向用户显示哪个产品的销售额最高
因此,我的问题是:
a) 如果我试图使用NextLine逐行读取多个数据类型,如何读取?
我知道如何读取所有整数、所有双精度数或所有字符串,但如果它们都不同,那么最好的方法是什么
到目前为止,我的尝试导致了不匹配的异常
b) 我最好把所有的值都读作字符串,然后用正则表达式将它们解析成变量
c) 如果我要根据最高利润对销售额进行排序,我是否需要将每个产品的总销售额存储在单独的变量中?如果我使用循环读取文件的输入,是否可以这样做?(我们尚未涉及阵列)
这是我一直在玩的代码的开始。我仍然无法在中读取单独的数据类型。欢迎任何反馈/批评
import java.util.Scanner; // Needed for scanner class
import java.io.*; // Needed for the File and IOException
public class SalesProcessor
{
public static void main(String[] args) throws IOException
{
int x;
double sales = 0;
double total = 0;
double profit = 0;
// Create scanner object for keyboard input.
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter the filename: ");
String filename = keyboard.nextLine();
// Open the file
File file = new File(filename);
Scanner inputFile = new Scanner(file);
String line = inputFile.nextLine( );
for (x = 1; x <= 5; x++)
{
while (line != "END")
{
int plant = inputFile.nextInt();
switch (plant)
{
case 1:
while (inputFile.hasNext())
{
sales = inputFile.nextDouble();
total = total + sales;
}
profit = sales * .06;
System.out.println(total);
System.out.println(profit);
System.out.println(profit);
break;
}
}
}
}
}
import java.util.Scanner;//扫描器类需要
导入java.io.*;//需要文件和IOException
公共类销售处理器
{
公共静态void main(字符串[]args)引发IOException
{
int x;
双倍销售额=0;
双倍合计=0;
双倍利润=0;
//为键盘输入创建扫描仪对象。
扫描仪键盘=新扫描仪(System.in);
System.out.print(“输入文件名:”);
字符串文件名=keyboard.nextLine();
//打开文件
文件=新文件(文件名);
扫描仪输入文件=新扫描仪(文件);
stringline=inputFile.nextLine();
对于(x=1;x通常,您需要为每个朋友使用java标记器。您的while循环似乎一直持续到文件末尾。当它遇到给定行的最后一个双精度(and/n)之后的字符串时,将抛出异常。