2015-11-28 54 views
0

所以我试图从文本文件导入数据。这是该文件的内容:Java如何计算阵列中有多少个元素有一个范围?

的第一个数字是应该放置测试分数的数量。第二行数字包含个人测试分数。

我使用BufferedReaderStringTokenizer来读取数据并将其放入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;并发现数组的值适合在该范围的最小值和最大值之间时,则应该将1添加到数组int[] countarray;并移至下一个值。这就是它将如何找到多少个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

我想你需要详细阐述一下“我不能让这个程序工作。”什么不工作?它会崩溃吗?计算错了吗?你需要提供一些你实际遇到的问题的更多细节。 –

+0

计算错误。 – Galaxy

回答

0

已正确读取数据到anArray,误差与最终for循环。为什么不重复分数级别,而是将它们分类到一个区间?

由于它是功课,你需要尝试重写那个循环,我们不会为你做。继续使用System.out.println来帮助您调试您的程序,并一次完成一步。

相关问题