【问题标题】:Reading array from txt file?从txt文件中读取数组?
【发布时间】:2016-05-03 18:50:45
【问题描述】:

这个文件从一个只有一行的文本文件中读取:

  7319812227725338960527291316

输出是:

Reading input values from text.txt
731
981
222
772
533
89
60
527
291
316

问题是程序如何给出这个输出?我不知道它是如何在每个数组单元格中存储 3 位数字的?

我还注意到,当我将 txt 文件的内容复制到 Word 时,它会粘贴此内容

   7319812227725338960527291316

进入一列:

731
981
222
772
533
89
60
527
291
316

文本文件来自我的老师。但是当我创建自己的文本文件并放置一个像 123 456 789 这样的数字时,输出是有意义的,因为 txt 文件中的数字用空格分隔,因此每个数字都将分配给一个数组单元格。

 import java.util.Scanner;
 import java.util.Vector;
 import java.util.Arrays;
 import java.io.File;

 public class test{

 public static void main(String[] args){
    Scanner s;
    if (args.length > 0){
        try{
            s = new Scanner(new File(args[0]));
        } catch(java.io.FileNotFoundException e){
            System.out.printf("Unable to open %s\n",args[0]);
            return;
        }
        System.out.printf("Reading input values from %s.\n",args[0]);
    }else{
        s = new Scanner(System.in);
        System.out.printf("Enter a list of non-negative integers. Enter a      negative value to end the list.\n");
    }
    Vector<Integer> inputVector = new Vector<Integer>();

    int v;
    while(s.hasNextInt() && (v = s.nextInt()) >= 0)
        inputVector.add(v);

    int[] array = new int[inputVector.size()];

    for (int i = 0; i < array.length; i++){
        array[i] = inputVector.get(i);
                    System.out.println(array[i]);
            }

}

}

【问题讨论】:

  • 这可能是您在 Windows 记事本中打开的测试文件无法正确处理换行符 (\n)。

标签: java arrays io


【解决方案1】:

问题是行结束符。您机器的文本编辑器不理解您的教授程序插入的换行符。但是您的 java 程序确实会检查其他操作系统的行尾。这就是为什么您的 Java 程序实际上可以选择正确的数字的原因。 我相信您可以使用不同的文本编辑器(如 Sublime)打开老师的文本文件,这将允许您查看和转换具有不同行尾字符的文件

【讨论】:

  • 非常感谢。其他人帮助:你还没有说你从哪里得到你的文字。如果它来自网站,则页面上的文本中可能会有格式。它是否将OK粘贴到记事本中?如果是这样,请从那里复制。这将从文本中消除任何不可打印的内容。 – AFH
  • 这取决于您粘贴文本的程序。有些程序会转换/提醒您一些不可打印的字符
猜你喜欢
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2016-05-27
  • 2018-11-01
相关资源
最近更新 更多