【问题标题】:Reading ints from a txt file and storing to an array从 txt 文件中读取整数并存储到数组中
【发布时间】:2012-11-22 21:37:21
【问题描述】:

我正在尝试从文本文件中读取整数并将它们存储到数组中。文本文件内容为:

4
-9
-5
4
8
25
10
0
-1
4
3
-2
-1
10
8
5
8

然而,当我运行我的代码时,我在控制台窗口中得到[I@41616dd6...

public static void main(String[] args) throws IOException
    {
        FileReader file = new FileReader("Integers.txt");
        int[] integers = new int [100];
        int i=0;
        try {
            Scanner input = new Scanner(file);
            while(input.hasNext())
            {
                integers[i] = input.nextInt();
                i++;
            }
            input.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        System.out.println(integers);
    }

【问题讨论】:

    标签: java arrays file


    【解决方案1】:

    您打印的是数组的虚拟内存地址,而不是实际的数组项:

    你可以一个一个打印出实际的数组项,像这样:

    // This construct is called a for-each loop
    for(int item: integers) {
       System.out.println(item);
    }
    

    @akuhn 正确地指出 Java 有一个内置的帮助器:

    System.out.println(Arrays.toString(integers));
    

    请注意,您需要添加:

    import java.util.Arrays
    

    在您的导入中使其正常工作。

    【讨论】:

    • 更简单的是System.out.println(Arrays.toString(integers));
    • 绝对正确@akuhn,但我想证明发生了什么。
    【解决方案2】:

    不幸的是,Java 的设计者没有为数组添加适当的字符串表示。

    改为使用

    System.out.println(Arrays.toString(integers));
    

    您需要import java.util.Arrays; 才能完成这项工作。

    【讨论】:

      【解决方案3】:

      而不是这个

      System.out.println(integers);
      

      试试这个

      System.out.println(integers[0] + " : " + integers[1]);
      

      您需要在integers[] 数组而不是数组本身中打印实际值

      【讨论】:

        【解决方案4】:

        如果使用 int 数组不是限制,那么我建议使用 List。你可以这样使用它:

         List<Integer> integers = new ArrayList<Integer>();
         Scanner input = new Scanner(file);
         while(input.hasNext()){
           integers.add(scanner.nextInt());
         }
         System.out.println(integers);
        

        输出:[1,2,-1,23]

        【讨论】:

          【解决方案5】:

          每当您将任何对象传递给 System.out.println() 时,它都会打印该对象的 toString()。如果它没有被覆盖,它会打印该对象的内存地址。

          System.out.println(integers);
          

          正在尝试打印整数数组的 toString() 表示,它只是该数组的 JVM 地址。

          要打印数组中的实际数字,您需要遍历数组或将数组转换为java.util.ArrayList。(实现了toString() 方法。)

          【讨论】:

            【解决方案6】:

            这应该可以帮助您从文件中读取整数并将其存储在数组中

            导入 java.util.Scanner;

            导入 java.io.File;

            导入 java.util.ArrayList;

            公共类文件到数组{

            public static ArrayList<Integer> read(File f)
            {
                ArrayList<Integer> array=new ArrayList<Integer>();
                try
                {
                
                Scanner sc=new Scanner(f);
                while(sc.hasNextLine())
                {
                    array.add(sc.nextLine());
                }
                
                }
                catch(Exception e)
                {
                    System.out.printf("ERROR : %s", e);
                }
                return array;
            }
            public static void main(String[] args) {
                File file1=new File("file1.txt");//your file path here
                ArrayList<Integer> array1;
                array1=read(file1);
                System.out.println(array1);
                    
            }
            

            }

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-01-22
              • 1970-01-01
              • 2013-03-24
              • 1970-01-01
              • 1970-01-01
              • 2021-10-25
              • 1970-01-01
              相关资源
              最近更新 更多