现在在做一个小工作,要求是把txt文档输入到我的Java程序里,程序自动运算并得出答案。
txt文档内容如下:
10 10 10 10 10 10 10 10 10 10 102.45
0 0 0 0 0 0 1 0 0 0 057.10
0 0 0 1 0 1 1 1 2 0 034.55
0 0 0 1 0 0 1 0 0 1 099.95
0 0 0 0 0 0 0 0 0 0 125.00
0 0 0 0 0 0 1 0 1 0 0
0第一行自动去除掉(原因不解释了,不是问题所在);剩下的我把文本内容用token去除空白换行,并每一行都用vector.add()添加到vector里,顺便用vector.remove()把最后多出的0去掉,剩下的文本就是这样:
2.45
0 0 0 0 0 0 1 0 0 0 0
57.10
0 0 0 1 0 1 1 1 2 0 0
34.55
0 0 0 1 0 0 1 0 0 1 0
99.95
0 0 0 0 0 0 0 0 0 0 1
25.00
0 0 0 0 0 0 1 0 1 0 0
2.45, 57.10我已经用parseFloat转换成float了,我打算吧每隔一行显示一次的00000111...,每一个0都存为一个Integer,原来的代码是这样:
        int fiveCuser = 0;
     int tenCuser = 0;
     int twentyCuser = 0;
     int fiftyCuser = 0;
     int oneDuser = 0;
     int twoDuser = 0;
     int fiveDuser = 0;
     int tenDuser = 0;
     int twentyDuser = 0;
     int fiftyDuser = 0;
     int hundredDuser = 0;
        for(int i=1;i<10;i+=2)
        {
         String[] userTenderedTemp = (data.elementAt(i)).split(" ");
         fiveCuser = Integer.parseInt(userTenderedTemp[0]);
     tenCuser = Integer.parseInt(userTenderedTemp[1]);
     twentyCuser = Integer.parseInt(userTenderedTemp[2]);
     fiftyCuser = Integer.parseInt(userTenderedTemp[3]);
     oneDuser = Integer.parseInt(userTenderedTemp[4]);
     twoDuser = Integer.parseInt(userTenderedTemp[5]);
     fiveDuser = Integer.parseInt(userTenderedTemp[6]);
     tenDuser = Integer.parseInt(userTenderedTemp[7]);
     twentyDuser = Integer.parseInt(userTenderedTemp[8]);
     fiftyDuser = Integer.parseInt(userTenderedTemp[9]);
     hundredDuser = Integer.parseInt(userTenderedTemp[10]);
        }
这样我11个int都有了值,但是!我的文本里总共有5行这样的string,我想把这5行的string都自动存到5x11个int里,难道要手动一个一个做?而且,若文本内容改变,少了一行0000121000 string或者多了一行,代码就得重写,我尝试用2d array做但结果有错,麻烦高手帮忙修改下我的代码!
        String[] userTenderedTemp = new String[10];
        for(int i=1;i<10;i+=2)
        {
         userTenderedTemp = (data.elementAt(i)).split(" ");
        }
        int[][] storeAmountTendered = new int[(data.size())/2][10];
        for(int i=0;i<(data.size())/2;i++)
        {
         for(int j=0;j<10;j++)
         {
         storeAmountTendered[i][j] = Integer.parseInt(userTenderedTemp[j]);
         }
        }

解决方案 »

  1.   

    ArrayList<ArrayList>
    数组里再存放数组
      

  2.   

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;public class Test { public static void main(String[] args) throws FileNotFoundException {
    Scanner scanner = new Scanner(new File("data.txt")); // data.txt是你删除空格后的
    List<Entity> entities = new ArrayList<Entity>(); while (scanner.hasNextLine()) {
    String floatValueString = scanner.nextLine(); if (scanner.hasNextLine()) {
    String intValuesString = scanner.nextLine();
    entities.add(new Entity(floatValueString, intValuesString));
    }
    } System.out.println(entities);
    }
    }class Entity {
    private float floatValue;
    private List<Integer> intValues; public Entity(String floatValueString, String intValuesString) {
    floatValue = Float.parseFloat(floatValueString.trim()); String[] ints = intValuesString.trim().split(" ");
    intValues = new ArrayList<Integer>();
    for (int i = 0; i < ints.length; ++i) {
    intValues.add(Integer.parseInt(ints[i]));
    }
    } @Override
    public String toString() {
    return String.format("Float: %f, Ints: %s\n", floatValue,
    intValues.toString());
    }
    }
      

  3.   

    data.txt:2.45
    0 0 0 0 0 0 1 0 0 0 0
    57.10
    0 0 0 1 0 1 1 1 2 0 0
    34.55
    0 0 0 1 0 0 1 0 0 1 0
    99.95
    0 0 0 0 0 0 0 0 0 0 1
    25.00
    0 0 0 0 0 0 1 0 1 0 0