【问题标题】:Reading from a file arrays [duplicate]从文件数组中读取[重复]
【发布时间】:2016-12-10 01:36:47
【问题描述】:

我正在学习 Java 入门级课程,但遇到了一个小问题。我正在从文件中读取随机数的整数(例如 2 24 31 4 5 6 7 8 9 11 15),我必须将这些整数输入到数组中。

作业 1) 编写一个程序,要求用户输入一个包含未知数量整数的文本文件的文件名。还有一个输出文件名来显示结果。您将从输入文件中读取所有整数,并将它们存储在一个数组中。 (您可能需要读取文件中的所有值一次才能获得总计数)使用此数组,您将找到最大数、最小数、平均值和标准偏差。这些结果将同时报告给屏幕并放入用户选择的输出文件中。 输出到屏幕和文件可能如下所示:

    Read from file: 12 values
        Maximum value = 20
    Minimum value = 3
    Average value = 13.34
    Standard Deviation = 2.15

您可以创建一个简单的记事本文件来存储一堆整数,只需确保每个数字之间至少有一个空格或一行。

问题:如果我不知道文件中有多少个变量,我怎么知道将数组初始化为哪个变量?我想过将数组初始化放在 for 循环下面..但是我不会初始化数组。

我的代码如下:

import java.io.*;
import java.util.*;
class lab13
{
public static void main(String args[]) throws IOException
   {

   Scanner keyboard= new Scanner (System.in);

   File text = new File("readme.txt"); //creating file readme.txt
   Scanner fromfile = new Scanner(text);  //reading from File txt

   int counter=0;  

      int [] array = new int[10];
      for(int i=0;i<array.length;i++)
      {            
         array[i] = fromfile.nextInt(); //storing integers into array

         System.out.println(" "+array[i]);   //print out numbers in file
         counter++;
      }

    System.out.println("");
    System.out.println("Read from file:"+counter+" values");        
}

编辑:我的问题的答案是有 2 个数组,一个读取文件以计算变量的数量,另一个数组存储变量。

我不确定为什么这被标记为“重复”,因为另一个问题是从文件中读取。然而它完全不同。伙计,这个社区很苛刻。哈哈。

【问题讨论】:

  • 因为数组的大小是动态的,所以ArrayList会是更好的解决方案。
  • 提示:您不限于使用单个数组。您需要在读取整数时调整数组的大小。
  • 在最初不知道文件中有多少数据的情况下,无法确定数组应该有多大。您必须继续向List 添加数据,然后将其转换为数组,但我不确定这是否可以接受。你最好的选择:问你的老师
  • @DB 阵列应该以什么速度增长?他应该在之后修剪阵列吗?速率和修剪重要吗?唯一能回答这些问题的人就是给他分配任务的人。
  • @VinceEmigh 因为这是一门入门课,所以我想的分数是 1,但可以肯定的是,他应该问老师。

标签: java


【解决方案1】:

如果分配要严格使用数组,您可以使用循环来计算条目数,如下所示。

int num = 0;
while (text.hasNext())
       num++;

这将计算文件中的整数个数。然后你用变量 num 初始化数组

【讨论】:

  • 当我尝试使用“method.hasNext()”时,我收到以下错误消息。 lab13.java:14:错误:找不到符号 while (text.hasNext()) ^ 符号:方法 hasNext() 位置:文件类型的变量文本 1 错误不确定如何编写检查文件内每个 int 的条件。
  • 对不起,我搞砸了。用 fromFile.hasNext() 替换 text.hasNext()。 .hasNext() 是 Scanner 方法,而不是 File
【解决方案2】:

您可以使用 ArrayList。 ArrayList 是一个包装数组的对象,并在您向其中添加元素时处理重新分配新数组。

【讨论】:

  • 我从未使用过 ArrayList...当我查找示例时...这一切似乎都是我以前从未学过或使用过的词。
猜你喜欢
  • 2014-01-16
  • 1970-01-01
  • 2022-01-16
  • 2020-08-15
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多