要求编写一个程序,从一个文件读取学生们的成绩(0-200分),要求将成绩按以下范围分类:0-24,24-49,50-74,75-99,100-124,125-149,150-174,175-200. 输出分数范围和相应的人数。 学生成绩(CX09EX04data.txt)内容为: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.用数组怎么解决????

解决方案 »

  1.   


      String[] Score=你的值.split(",");  //这里是java的分割成绩   asp.net我忘了!
      int a,b,c,d,c,d,e,f,g ;
      for(int i = 0;i < Score.leng; i++){
         if(Score[i]>=0 & Score[i] <=24)
    {
      a++;
    }else if(Score[i]>=24 & Score[i] <=49)
    {
     b++;
    }
    还有自己写自己打~ ~   
    }
      

  2.   


    public class ScoreRangeCount
    {
    public static void main(String[] args)
    {
    int[] scores = {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};
    int[] scoreRangeCount = new int[8]; for (int x:scores)
    {
    if (x==200)
    {
    scoreRangeCount[7]++;
    continue;
    }
    for (int j = 0; j<8; j++)
    {
    if ((x>=j*25) && (x < (j+1)*25))
    {
    scoreRangeCount[j]++;
    break;
    }
    }
    } for (int i = 0; i<8; i ++)
    {
    System.out.println("Count of Score in ["+(i*25) + ", " +((i+1)*25) + "]: "+ scoreRangeCount[i]);
    }
    }
    }
    代码应该能看懂吧
    没写类,只是介绍下我的思想而已Count of Score in [0, 25): 1
    Count of Score in [25, 50): 2
    Count of Score in [50, 75): 0
    Count of Score in [75, 100): 6
    Count of Score in [100, 125): 1
    Count of Score in [125, 150): 3
    Count of Score in [150, 175): 5
    Count of Score in [175, 200]: 8
      

  3.   

    读Txt文件,解析成数组, 显示题目分组有问题:0-24,24-49,50-74,75-99,100-124,125-149,150-174,175-200应该改成:0-24,25-49,50-74,75-99,100-124,125-149,150-174,175-200结果:0-25:12,
    25-50:28,35,
    50-75:
    75-100:76,89,76,87,99,87,
    100-125:100,
    125-150:135,129,149,
    150-175:150,150,167,150,157,
    175-200:200,178,189,200,175,176,200,189,
    package fileProcess;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    public class FileTest { /**
     * @param args
     */
    public static void main(String[] args) { new ClassifyDisplay();
    }}class ClassifyDisplay
    {
    public ClassifyDisplay()
    {
    int scroes[] = getAllScore();
    int[][] result = new int[LevelNum][scroes.length];
    for (int i = 0; i < scroes.length; i++)
    {
    int level = getLevel(scroes[i]);
    for (int j = 0; j < scroes.length; j++)
    {
    if (result[level][j] == 0)
    {
    result[level][j] = scroes[i];
    break;
    }
    }
    }

    display(result);

    }

    private void display(int[][] result)
    {
    for (int i = 0; i < result.length; i++)
    {
    System.out.print(getLevelDecription(i) + ":");
    for (int j = 0; j< result[i].length; j ++)
    {
    if (result[i][j] > 0)
    {
    System.out.print(result[i][j] + ",");
    }
    else
    {
    System.out.println();
    break;
    }
    }
    }
    }

    /**
     * 返回等级
     * @param score
     * @return
     */
    private int getLevel(int score)
    {
    if (score == 200)
    {
    return 7;
    }
    return score/25;
    }


    private String getLevelDecription(int level)
    {
    String dsp = (level* 25) + "-" + (level +1)* 25;
    return dsp;
    }

    private int[] getAllScore()
    {
    String fileContent = getStringFromFile("1.txt").trim();
    String[] arr = fileContent.split(",");
    int[] intarr = new int[arr.length];
    for (int i = 0; i < arr.length; i++)
    {
    intarr[i] = Integer.valueOf(arr[i]);
    }
    return intarr;
    }

    public String getStringFromFile(String filePath)
    {
    try {
    StringBuffer sBuffer = new StringBuffer();
    BufferedReader in = new BufferedReader(new FileReader(filePath));
    if(!new File(filePath).exists())
    {
    return null;
    }
    while (in.ready()) {
    sBuffer.append(in.readLine() + "\r\n");
    }
    in.close();
    return sBuffer.toString();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }
    private final int LevelNum = 200/ 25;
    }
      

  4.   

    个人认为
    switch(array[i])在处理大量数据时有更高速度