Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用分隔符填充数组_Java_Arrays - Fatal编程技术网

在java中使用分隔符填充数组

在java中使用分隔符填充数组,java,arrays,Java,Arrays,我有一个用标签隔开的文本文档。每行都有相同类型的重复信息。当我使用hasNextLine()和一个计数器来计算行数时,它只计算一部分行数。我仍然可以创建计数器大小的数组。当我使用for循环填充数组时,结果是意外的 下面是我所做工作的总结 import java.util.*; import java.io.*; public class Test { public static void main(String[] args) {

我有一个用标签隔开的文本文档。每行都有相同类型的重复信息。当我使用hasNextLine()和一个计数器来计算行数时,它只计算一部分行数。我仍然可以创建计数器大小的数组。当我使用for循环填充数组时,结果是意外的

下面是我所做工作的总结

    import java.util.*;
    import java.io.*;
    public class Test {
        public static void main(String[] args) {
            try {
                Scanner input = new Scanner(new File("input.txt"));
                int lines = 0;
                input.nextLine(); //for the header of the table
                while(input.hasNextLine()) {
                    lines++;
                    input.nextLine();
                }
                System.out.println(lines);//here I don't get the total amount
                String[] colors = new String[lines];
                int[] number = new int[lines];
                fillArray(colors, number);
                System.out.println(colors[i] + i);
            }
            catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
        public static void fillArray(String[] color, int[] numbers) {
            try {
                Scanner input = new Scanner(new File("input.txt"));
                input.nextLine(); //for table header
                input.useDelimiter("\\t");
                for(int i = 0; i < color.length; i++) {
                    color[i] = input.next();
                    input.next(); //info i'm not using
                    numbers[i] = input.nextInt();
                    input.nextLine(); //consumes '\n'
                }
             }
             catch (Exception e) {
                 System.out.println(e.getMessage());
             }
         }
    }
import java.util.*;
导入java.io.*;
公开课考试{
公共静态void main(字符串[]args){
试一试{
扫描仪输入=新扫描仪(新文件(“input.txt”);
int行=0;
input.nextLine();//用于表的标题
while(input.hasNextLine()){
行++;
input.nextLine();
}
System.out.println(行);//这里我没有得到总数
字符串[]颜色=新字符串[行];
int[]编号=新的int[行];
填充数组(颜色、数字);
System.out.println(颜色[i]+i);
}
捕获(例外e){
System.out.println(e.getMessage());
}
}
公共静态void fillArray(字符串[]颜色,整数[]数字){
试一试{
扫描仪输入=新扫描仪(新文件(“input.txt”);
input.nextLine();//用于表头
输入。使用分隔符(\\t“);
for(int i=0;i
它可以编译,但我的结果如下所示:

空\n 黄色0\n 空1\n null2\n null3\n 等等

它还显示正确的颜色和编号;但只有一行


任何帮助都将不胜感激。我没有太多使用useDelimiter,但据我所知,它将使“\t”成为单独的标记,而不是空白,并且“\n”

不用担心,使用它:

final List<String> lines = Files.readAllLines(Paths.get("input.txt"),
    StandardCharsets.UTF_8);
final List lines=Files.readAllLines(path.get(“input.txt”),
标准字符集(UTF_8);
然后读取的行数与
lines.size()
一样简单,您只需浏览列表即可处理行。

您可以使用OpenCSV。使用它实现CSV阅读器程序非常容易