所以我试图从文本文件中导入数据。这是文件的内容:
15
49 50 51 59 0 5 9 10 15 19 50 55 89 99 100
第一个数字应该代表测试分数。第二行数字包含单独的测试分数。
我正在使用BufferedReader
和StringTokenizer
来读取数据并将其放入int[] anArray;
。变量int number1 = Integer.parseInt(s1);
应该保存第一行文本(所有测试分数的总量)。然后我初始化anArray = new int[number1];
以将所有测试分数存储在其中。我成功地完成了这项任务。因为所有数组都从[0]
开始,所以我初始化变量int readnumber = number1 -1;
这是初始化int[] anArray;
:
int x = readnumber;
for (x = readnumber; x >= 0; x--)
{
s2 = st.nextToken();
anArray[x] = Integer.parseInt(s2);
countarray[x] = Integer.parseInt(s2);
//System.out.println (" Token is: " + s2);
//System.out.println (anArray[x]);
}
我应该创建一个可以通过int[] anArray;
并计算测试分数的数组。我应该将这些测试分数保存在一个范围内。 0 - 9,10 - 29,30 - 39,40 - 49,50 - 59,60 - 69,70-79,80 - 89,90 - 100.
这是一种统计。我应该将int[] anArray;
的各个值分开,并将它们放入新数组中的上述范围内。所以我创建了数组countarray[x] = Integer.parseInt(s2);
。我制作了一个代码,根据输入找到最小和最大范围值。每次循环经过int[] anArray;
并发现数组的[x]
值适合范围的最小值和最大值时,应该将1
添加到数组int[] countarray;
1}}然后移动到下一个。这就是它如何找到适合特定范围参数的int[] anArray;
个值的方式。该循环周围的其他代码只是从输入中确定范围参数,因此它们是灵活的,而不是"硬连线"进入代码。
我不能使这个程序工作。我认为这只是int[] countarray;
语法中的错误。你们可以调查一下吗?所有其他循环和计算必须保持不变。
Here is my main code:
import java.io.*;
import java.util.*;
public class GradesHistogram
{
public static void main(String[] args)throws java.io.IOException
{
String s1;
String s2;
BufferedReader br = new BufferedReader (new FileReader ("grades.in.txt"));
s1 = br.readLine();
System.out.print(s1);
System.out.println("\n");
int number1 = Integer.parseInt(s1);
//System.out.println("Number1 is " +number1);
int[] anArray;
anArray = new int[number1];
anArray[0] = 1;
int[] countarray;
countarray = new int[number1];
countarray[0] = 1;
System.out.println(s1);
s2 = br.readLine();
System.out.println(s2);
StringTokenizer st = new StringTokenizer (s2);
int readnumber = number1 -1;
int x = readnumber;
for (x = readnumber; x >= 0; x--)
{
s2 = st.nextToken();
anArray[x] = Integer.parseInt(s2);
countarray[x] = Integer.parseInt(s2);
//System.out.println (" Token is: " + s2);
//System.out.println (anArray[x]);
}
int histogrammin = 0;
int histogrammax = 0;
x = readnumber;
for (int histogramrows = 0; histogramrows < 10; histogramrows++)
{
histogrammin = histogramrows * 10;
if (histogrammin == 90)
{
histogrammax = histogrammin + 10;
}
else
{
histogrammax = histogrammin + 9;
for (x = 0; x < 14; x++)
{
if (histogrammin <= anArray[x] && anArray[x] <= histogrammax)
{
countarray[x]++;
System.out.println("countarray = "+countarray[x]);
}
}
}
}
}
}
答案 0 :(得分:0)
您已将数据正确读入anArray
,错误与最终for
循环有关。为什么不迭代等级范围而不是迭代等级范围,并将它们分类到一个区间?
由于它的作业,你需要尝试重写那个循环,我们不会为你做这件事。继续使用System.out.println
来帮助您调试程序,并一步一步地完成。