要求编写一个程序可以读入一个文件,文件由一组范围在0-200的数字组成,并分成八个区间,即0-24,25-49,50-74,75-99,100-124,125-149,150-174,175-200,用76,89,150,135,200,76,12,100,150,28,178,189,167,200,175,150,87,99,129,149,176,200,87,35,157,189作为输入的数字文件,输出该些数字所在的区间和该区间的数字数量。以下是我编的程序,有很多问题,请高手指教啊~~谢谢了~package chapt09;
import java.io.*;import com.sun.org.apache.bcel.internal.classfile.InnerClass;
public class CH09EX03 
{
public static void main(String[] args) throws FileNotFoundException,IOException
{
int linecount=0;
char[] testscores=new char[26];
IntClass next=new IntClass();
String grade;
FileReader inputStream=new FileReader("e:\\CH09EX03data.txt");

next.setNum(inputStream.read());
while (next.getNum()!=1)
{
copyText(inputStream,next,testscores);
linecount++;
next.setNum(inputStream.read());
}
String[]testgrade=testGrade(testscores);
System.out.print(testgrade);
writeTotal(linecount,testgrade);
System.out.println();

}
static void copyText(FileReader infile,int[] scores) throws IOException
{
while (next.getNum()!=(int)'\n')
{
    System.out.print((char)(next.getNum()));
    chCount((char)(next.getNum()),scores);
    next.setNum(infile.read());
}
System.out.println();
}
static void chCount(char ch,int[] scores)
{
int index;
int i;
index=(int)ch-65;
if (index>=0&&index<26)
scores[index]++;

}
public static String[] testGrade(char...testscores)
{
int j;
String[] Grade = new String[26];
for(j=1;j<testscores.length;j++)
{
if(testscores[j]>=175&&testscores[j]<=200)
Grade[j]="A";
    if(testscores[j]>=150&&testscores[j]<=174)
     Grade[j]="B";
    if(testscores[j]>=125&&testscores[j]<=149)
     Grade[j]="C";
    if(testscores[j]>=100&&testscores[j]<=124)
     Grade[j]="D";
    if(testscores[j]>=75&&testscores[j]<=99)
     Grade[j]="E";
    if(testscores[j]>=50&&testscores[j]<=74)
     Grade[j]="F";
    if(testscores[j]>=25&&testscores[j]<=49)
     Grade[j]="G";
    if(testscores[j]>=0&&testscores[j]<=24)
     Grade[j]="H";
}
return Grade;

}
static void writeTotal(int lines,String[] letters)
{
int i;
System.out.println();
for (i=0;i<26;i++)
System.out.println((char)(i+65)+"count="+letters[i]);
}
}

解决方案 »

  1.   

    这个题目前面不是有过了嘛?
    http://topic.csdn.net/u/20090525/15/1946c064-dcd0-4a4f-be39-6989670c2e68.html
      

  2.   

    建议楼主注意下编码风格!!
    楼主import com.sun.org.apache.bcel.internal.classfile.InnerClass类在哪儿??
      

  3.   

    也写了一个。路过帮忙import java.io.*;
    import java.util.*;
    public class GradeTest
    {
    public void readGrade(String fileName)
    {
    FileReader fis = null;
    BufferedReader br = null;
    try
    {
    fis = new FileReader(fileName);
    br = new BufferedReader(fis);
    while((line = br.readLine())!=null)
    {
    lineAppend += line;
    }
    fis.close();
    br.close();
    }
    catch(IOException e)
    {
    System.out.println("异常");
    e.printStackTrace();
    }
    String s = lineAppend.trim();
    array = s.split(",");
    for(int i=0;i<array.length;i++)
    list.add(Integer.parseInt(array[i]));
    }
    public void atArea()
    {
    for(int i=0;i<list.size();i++)
    {
    if(list.get(i)>=175&&list.get(i)<=200)
    System.out.print("A");
      else if(list.get(i)>=150&&list.get(i)<175)
       System.out.print("B");
      else if(list.get(i)>=125&&list.get(i)<150)
       System.out.print("C");
      else if(list.get(i)>=100&&list.get(i)<125)
       System.out.print("D");
      else if(list.get(i)>=75&&list.get(i)<100)
       System.out.print("E");
      else if(list.get(i)>=50&&list.get(i)<75)
       System.out.print("F");
      else if(list.get(i)>=25&&list.get(i)<50)
    System.out.print("G");
      else
       System.out.print("H");
      counter++;
      if(counter==10)
      {
       System.out.println();
       counter = 0;
      }
    }
    }
    public static void main(String[] args)
    {
    String path = "D:\\api\\io\\Grade.txt";
    GradeTest test = new GradeTest();
    test.readGrade(path);
    test.atArea();
    }
    private String line ;
    private String lineAppend = "";
    private int counter = 0; //换行计数
    private String[] array;
    private List<Integer> list = new ArrayList<Integer>();
    }