【问题标题】:read from file as parallel arrays in java从文件中读取为java中的并行数组
【发布时间】:2016-04-21 23:25:59
【问题描述】:

这是我从文件中读取并在控制台中显示的代码

    try
    {
        BufferedReader readFile = new BufferedReader(new FileReader("sales.txt"));
        String line = "";
        while((line = readFile.readLine()) != null)
        {
            String tmp[] = line.split(",");
            year = Integer.parseInt(tmp[0]);
            quarter = tmp[1];
            sales = Integer.parseInt(tmp[2]);
            //System.out.printf("Year: %s\tQuarter: %s\tSales: %d\n",year,quarter,sales);   
        }
        readFile.close();
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    userInput.close();

在我名为“sales.txt”的文件中,我有这个:

2012,Q1,9300

2012,Q2,10225

2012,Q3,12420

2012 年第四季度,13250

2013,Q1,10500

2013,Q2,10900

2013年第三季度,11340

2013年第四季度14600

现在我被困在如何计算 2012 年和 2013 年第四季度的平均销售额

【问题讨论】:

  • 你了解变量了吗?
  • 很抱歉我没有收到问题
  • 计算平均值是一项非常基本的任务。如果您尝试这样做但遇到特定问题,请发布您的代码并解释问题所在。如果您不知道该怎么做,我不确定您来对地方了。
  • 哦,你的意思是,是的,我知道如何计算平均值,但在这种情况下如何计算?如何在 2012 年和 2013 年显示至少 q4?

标签: java java-io parallel-arrays


【解决方案1】:

仅针对这种情况:

     float avg = 0;
     int counter = 0;
     try
        {
            BufferedReader readFile = new BufferedReader(new FileReader("sales.txt"));
            String line = "";
            while((line = readFile.readLine()) != null)
            {
                String tmp[] = line.split(",");
                year = Integer.parseInt(tmp[0]);
                quarter = tmp[1];
                sales = Integer.parseInt(tmp[2]);
                if(year == 2012 || year == 2013)
                   if(quarter.equals("Q4"){
                       counter++;
                       avg+=sales;
                   }
                //System.out.printf("Year: %s\tQuarter: %s\tSales: %d\n",year,quarter,sales);   
            }
            avg /= counter; //Here there is the average! in avg
            readFile.close();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        userInput.close();

【讨论】:

  • 如果添加 'System.out.println(avg);'在控制台中将是 NaN
【解决方案2】:

//或从文件中读取为数组

int[] year = new int [lineCount];
        String[] quarter = new String [lineCount];
        int[] sale = new int [lineCount];

        Scanner readFile = new Scanner(new File("sales.txt"));

        while(readFile.hasNextLine())
        {
            String salesRecords = readFile.nextLine();
            Scanner lineScan = new Scanner(salesRecords);
            lineScan.useDelimiter(",");
            year[i] = lineScan.nextInt();
            quarter[i] = lineScan.next();
            sale[i] = lineScan.nextInt();
            lineScan.close();
            i++;
        }

【讨论】:

    【解决方案3】:
    //Read from file and store data in Array List
    
        Scanner inputFile = new Scanner(new File("sales.txt"));
    
        ArrayList<Integer> yearsList = new ArrayList<Integer>();
        ArrayList<String> quartersList = new ArrayList<String>();
        ArrayList<Integer> salesList = new ArrayList<Integer>();
    
        while(inputFile.hasNextLine()){
            String line = inputFile.nextLine();
    
            Scanner scanner = new Scanner(line);
            scanner.useDelimiter(",");
            while(scanner.hasNextLine()){
                yearsList.add(scanner.nextInt());
                quartersList.add(scanner.next());
                salesList.add(scanner.nextInt());
            }
            scanner.close();
        }
    
        inputFile.close();
    
        //. Testing Can I read the file properly 
        // System.out.println(years+" \n" + quarters + " \n" + sales);
    
        //. Convert from ArrayList into Array 
        Integer[]yearsArray = yearsList.toArray(new Integer[yearsList.size()]); 
        String[] quartersArray = quartersList.toArray(new String[quartersList.size()]);
        Integer[]salesArray = salesList.toArray(new Integer[salesList.size()]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多