Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 从txt文件读取数组?_Java_Arrays_Io - Fatal编程技术网

Java 从txt文件读取数组?

Java 从txt文件读取数组?,java,arrays,io,Java,Arrays,Io,此文件从只有一行的文本文件中读取: 7319812227725338960527291316 输出为: Reading input values from text.txt 731 981 222 772 533 89 60 527 291 316 问题是程序如何给出这个输出?我不知道它如何在每个数组单元中存储3位数字 我还注意到,当我将txt文件的内容复制到Word时,它会粘贴此内容 7319812227725338960527291316 列中: 731 981 222 77

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

  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]);
            }

}
import java.util.Scanner;
导入java.util.Vector;
导入java.util.array;
导入java.io.File;
公开课考试{
公共静态void main(字符串[]args){
扫描器;
如果(args.length>0){
试一试{
s=新扫描仪(新文件(args[0]);
}catch(java.io.filenotfound异常){
System.out.printf(“无法打开%s\n”,参数[0]);
返回;
}
System.out.printf(“正在从%s读取输入值。\n”,参数[0]);
}否则{
s=新扫描仪(系统英寸);
System.out.printf(“输入非负整数列表。输入负值以结束列表。\n”);
}
向量输入向量=新向量();
INTV;
而(s.hasNextInt()&&(v=s.nextInt())>=0)
输入向量。添加(v);
int[]数组=新的int[inputVector.size()];
for(int i=0;i

}问题在于行尾字符。计算机的文本编辑器无法理解程序插入的换行符。但是您的java程序会检查其他操作系统的行尾。这就是为什么您的Java程序实际上可以选择正确的数字。
我相信您可以使用不同的文本编辑器(如Sublime)从老师那里打开文本文件,该编辑器将允许您查看并转换具有不同行尾字符的文件

问题在于行尾字符。计算机的文本编辑器无法理解程序插入的换行符。但是您的java程序会检查其他操作系统的行尾。这就是为什么您的Java程序实际上可以选择正确的数字。
我相信您可以使用不同的文本编辑器(如Sublime)打开老师的文本文件,这样您可以查看并转换具有不同行尾字符的文件

非常感谢。其他人帮了忙:你还没有说你的文字是从哪里来的。如果它来自一个网站,页面上的文本中可能有格式。它是否可以粘贴到记事本中?如果是,请从那里复制。这将消除文本中任何不可打印的内容AFHIt将取决于粘贴文本的程序。有些程序会转换/提醒您一些不可打印的字符,例如:大量字符。其他人帮了忙:你还没有说你的文字是从哪里来的。如果它来自一个网站,页面上的文本中可能有格式。它是否可以粘贴到记事本中?如果是,请从那里复制。这将消除文本中任何不可打印的内容AFHIt将取决于粘贴文本的程序。某些程序会转换/提醒您某些不可打印字符,这可能是因为您在Windows记事本中打开的测试文件不能正确处理换行符(
\n
)字符。这可能是因为您在Windows记事本中打开的测试文件不能正确处理换行符(
\n
)。