当前位置: 首页 > 知识库问答 >
问题:

从文件中拆分行并存储为单独的数组值

胡墨竹
2023-03-14
175 31  4   877108051
62  827 2   879373421
138 100 5   879022956
252 9   5   891456797
59  421 5   888206015
arr[1][1] = 175
arr[1][2] = 31
arr[1][3] = 2
arr[1][4] = 879373421

arr[2][1] = 62
arr[2][2] = 827
arr[2][3] = 4
arr[2][4] = 877108051

.
.
.

我能够使用StringTokenizer正确地拆分,但在令牌形成后无法访问单个元素。尝试使用array.split(),但它没有将值拆分为单独的数组值。请帮帮我。提前谢了。

我的代码

static public void main(String[] args) {

    File file = new File("small.txt");
    String[] lines = new String[100];
    FileReader reader = new FileReader(file);
    BufferedReader buffReader = new BufferedReader(reader);
    int x = 0;
    String s;

    while((s = buffReader.readLine()) != null){
            lines[x] = s;

                // Using StringTokenizer
        StringTokenizer st = new StringTokenizer(lines[x]);
        while (st.hasMoreTokens()){
            System.out.println("Next token:"+st.nextToken());
        }



        // Using Split() 
        String[] split1 = lines[x].split(" ");
        int size = split1.length;
        System.out.println("Split size:"+size);

        int i = 0;
        for (String value : split1) {

            System.out.println("Index:"+i+"  "+ value); i++;}
}

共有1个答案

简烨烁
2023-03-14

您可以将此代码简化很多。试试这样的东西。

1)逐行读取文件,边读边拆行,
向包含String[]ArrayList添加值

2)关闭文件

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;

public class Test021 {

    static public void main(String[] args) throws Exception {

        File file = new File("small.txt");
        FileReader reader = new FileReader(file);
        BufferedReader buffReader = new BufferedReader(reader);
        String s = null;

        ArrayList<String[]> lst = new ArrayList<String[]>();
        String[][] res = null;

        while((s = buffReader.readLine()) != null){
            String[] arr = s.split("[\\s]+");
            lst.add(arr);
        }

        buffReader.close();

        res = new String[lst.size()][lst.get(0).length];
        res = lst.toArray(res);

        System.out.println();

        // System.out.println(res);

        // String result = Arrays.deepToString(res);
        // System.out.println(result);
        System.out.println();

        for (int i=0; i<res.length; i++){
            for (int j=0; j<res[i].length; j++){
                System.out.println("res[" + (i+1) + "][" + (j+1) + "]=" + res[i][j]);
            }
        }

        System.out.println();
    }

}
res[1][1]=175
res[1][2]=31
res[1][3]=4
res[1][4]=877108051
res[2][1]=62
res[2][2]=827
res[2][3]=2
res[2][4]=879373421
res[3][1]=138
res[3][2]=100
res[3][3]=5
res[3][4]=879022956
res[4][1]=252
res[4][2]=9
res[4][3]=5
res[4][4]=891456797
res[5][1]=59
res[5][2]=421
res[5][3]=5
res[5][4]=888206015
 类似资料:
  • $title=$\请求['test\u bestellte\u title'] $anzahl=$_请求['test_bestellte_anzahl'] $groesse=$\u请求['test\u bestellette\u groesse']; 我想将这个值数组插入到sql表中,比如 但我不知道如何像上面所示插入它 到目前为止,我把他们分开了,这就是我被困的地方 提前感谢!

  • 问题内容: 我有一个很大的JSON文件,它是对象的对象,我想在对象键之后将其拆分成单独的文件名。是否可以使用jq或任何其他现成的工具来实现此目的? 原始JSON格式如下 鉴于此输入,我想生成文件item1.json,item2.json等。 问题答案: 这应该给您一个开始: 或者当您坚持使用一些较卑鄙的语法时,似乎有些人更喜欢:

  • 问题内容: 在R中,我有一个名为 df 的数据帧,如下所示: 甲 听听听听 乙 听听听听 Ç 听听听听 d A1听听听听B1听听听听C1听听听听2.5 A2听听听听B2听听听听C2听听听听3.5 A3听听b3 c3 5-7 a4 b4 c4 2.5 我想用破折号分隔第三行和 D 列的值,并为第二个值创建另一行,并保留该行的其他值。 所以我想要这个: 甲 听听听听 乙 听听听听 Ç 听听听听 d A

  • 读取行和数字并将其存储到数组X中,但数组只到位置0和1,当它改变行时,它只将新的数字(例如NUM 3)写入旧数字所在的位置(例如pos 0中的NUM 1) 有什么解决办法吗?

  • 问题内容: 我想将我的int值拆分为数字。例如,如果没有。是542,结果应为5,4,2。 我有2个选择。1)将int转换为String,然后使用getCharArray(),我可以使用单独的字符,然后将它们转换回int值。 2)将int转换为String,而不将其转换为char数组,对其进行迭代并获取所有数字。 还有其他解决方法。如果没有,哪个选项会很快? 问题答案:

  • 问题内容: 我已经解决了这些问题,但似乎仍然无法解决。我有一个文本文件,分为几行。每行包含5个数据,中间用“,”分隔。我正在尝试读取此文件并将信息拆分为以下形式的字符串数组: 请有人可以帮我解决一个简单的解决方案!?谢谢!!!:) 数据示例: 样例代码: 公共无效的readFile(){ 错误 07-24 06:26:56.524:E / AndroidRuntime(27203):致命例外:主要