如何从包含多种数据类型的文本文件中输入

时间:2010-11-05 21:40:12

标签: 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
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;
       }



    } 
   }

  }
 }

1 个答案:

答案 0 :(得分:0)

通常,您需要为朋友使用java tokenizer。