如何从java中的文件中提取数据并正确格式化

时间:2015-06-18 20:08:51

标签: java

我正在尝试从文件中提取数据并计算人员收入的总和。这就是文件的确切内容:

Mark
20
Mike
25
Mary
50
Mink
5

可能必须看起来像这样:

WHO     TOTAL1  TOTAL2  TOTAL3
Mark     -        -        -
Mike     -        -        -
Mary     -        -        -
Mink     -        -        -
Combined total for Total 3:
Average for Total 3:

“ - ”行是程序计算数据时显示的位置。 如果第一个总数> 10,那么总数乘以10.第二个和第三个相同但分别乘以20和30。如何从文件中获取数据并将其计算为上面显示的格式?我通过1次计算写出了大部分代码来测试它,但它似乎没有正常工作。我在这行代码上收到几条错误消息: 错误:非法开始表达         public static void calc(double totalOne)  这是代码:

import java.util.Scanner;
import java.io.*;

public class Income
{
    public static void main(String[] args) throws IOException
    {

    Scanner keyboard = new Scanner(System.in);

    int i = 0;  
    String name = keyboard.nextLine();
    File file = new File("Income.txt");

    Scanner input = new Scanner(file);

        System.out.println();
        System.out.println("WHO     TOTAL1  TOTAL2  TOTAL3");

    while (input.hasNext())
    {
        String name = input.nextLine();
        i++;
        System.out.println(name);
        double totalOne;
        calc(totalOne);
    }
    input.close();

    public static void calc(double totalOne)
    {
            int money;
            if(input.hasNext())
            {
                input.nextLine();
                int money = input.nextLine;
            }
                if (money > 10)
                System.out.println(money*10);
    }
}
}

先谢谢!

2 个答案:

答案 0 :(得分:0)

您正在尝试在方法内声明方法。从public static void main()方法中取出public static void calc(){...}块。

答案 1 :(得分:0)

假设输入文件中的个体数量是已知的 - 而不是逐行方法,请考虑将输入文件并将其操作为名为income[][]的整数2D数组和字符串数组names[]

names[] = [Mark,Mike,Mary,Mink];
income[][] = { {20,0,0}
               {25,0,0}
               {50,0,0}
               {5,0,0}

假设您正确设置它们,它们将具有匹配的索引ie。 name[i]对应income[i][]中的行。使用此方法,您可以遍历各个阵列,在单个行上打印出正确的信息。

至于计算,可以使用传递2D数组的方法完成这些操作,并按照以下方式执行:

while(iterating through income[i][j]){
   if(j = 1){
         income[i][j] = income[i][(income[i][0])*20];
          };
   if(j = 2){
         income[i][j] = income[i][(income[i][0])*30];
          };

完成后,您将返回已完成所有计算的新更新的2D数组。打印到控制台或写入文件很容易

//using another loop to iterate through the arrays
System.out.println(names[i]+" "+income[i][0]+" "+income[i][1]+" "+income[i][2]);