Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从包含多个数据类型的文本文件中进行输入_Java_File_Input_Types - Fatal编程技术网

Java 如何从包含多个数据类型的文本文件中进行输入

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

这里的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
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)之后的字符串时,将抛出异常。