黑马程序员技术交流社区

标题: 急!!!求解!希望大家帮忙看看……非常感谢啊! [打印本页]

作者: 莫若吻    时间: 2014-4-13 23:27
标题: 急!!!求解!希望大家帮忙看看……非常感谢啊!
问题:定义一个实型(double)数组,用来存放学生成绩,提示用户确定成绩的个数,根据个数创建数组。 提示用户输入每个成绩,为每个数组元素赋值,询问用户要查找分数为多少的成绩,找到相应的成绩则显示第几位同学符合查询条件,找不到相应的成绩,则显示没有该成绩,如果超出成绩范围则进行相应提示。

下面是我自己实现的部分功能,还不完善,请大家帮忙看需要怎么修改。感谢ing……我思考了一晚上,都没有结果,问题出在“找不到相应的成绩,则显示没有该成绩”这句,不知道如何再继续判断了……(我没有用函数,这是自己的笨方法。)
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
  Scanner reader=new Scanner(System.in);//调用Scanner类,用来接收用户输入的数据
  double[] score; //创建数组,存放学生成绩
  int n;  //学生个数
  System.out.println("请您输出要存入的学生成绩个数:");
  n=reader.nextInt();
  if(n<0)
        System.out.println("您所输入的学生成绩个数为:"+n+",这是错误的!!!");
  else{
        score=new double[n];
        for(int i=0;i<n;i++)  //为学生成绩数组赋值
       {
        System.out.println("请您输入第"+(i+1)+"个学生的成绩:");
        score[i]=reader.nextDouble();
       }
       System.out.println("您想查找分数为多少的学生成绩?");
       int m=reader.nextInt();
       if(m<0||m>100)
             System.out.print("您所输入的分数值"+m+"超出学生成绩范围!");
       else
       {
            System.out.print("您所查找分数为"+m+"的成绩的学生是:");
             for(int j=0;j<score.length;j++)
             {
                   if(m==score[j])
                    {
                          System.out.print("第"+(j+1)+"个,");
                    }
             }
       }
    }
  }
}


作者: Kelvinhu    时间: 2014-4-13 23:42
本帖最后由 Kelvinhu 于 2014-4-13 23:43 编辑
  1. import java.util.Scanner;
  2. public class Test {
  3. public static void main(String[] args) {
  4.   Scanner reader=new Scanner(System.in);//调用Scanner类,用来接收用户输入的数据
  5.   double[] score; //创建数组,存放学生成绩
  6.   int n;  //学生个数
  7.   System.out.println("请您输出要存入的学生成绩个数:");
  8.   n=reader.nextInt();
  9.   if(n<0)
  10.         System.out.println("您所输入的学生成绩个数为:"+n+",这是错误的!!!");
  11.   else{
  12.         score=new double[n];
  13.         for(int i=0;i<n;i++)  //为学生成绩数组赋值
  14.        {
  15.         System.out.println("请您输入第"+(i+1)+"个学生的成绩:");
  16.         score[i]=reader.nextDouble();
  17.        }
  18.        System.out.println("您想查找分数为多少的学生成绩?");
  19.        int m=reader.nextInt();
  20.        int times = 0;
  21.        if(m<0||m>100)
  22.              System.out.print("您所输入的分数值"+m+"超出学生成绩范围!");
  23.        else
  24.        {
  25.             System.out.print("您所查找分数为"+m+"的成绩的学生:");
  26.              for(int j=0;j<score.length;j++)
  27.              {
  28.                    if(m==score[j])
  29.                     {
  30.                           System.out.print("第"+(j+1)+"个,");
  31.                           times=times+1;
  32.                     }
  33.              }   
  34.        }
  35.        if (times==0) {
  36.                System.out.println("不存在");
  37.        }
  38.     }
  39.   }
  40. }
复制代码




代码虽然改好了。但。。你这这么写太混乱了:L 明显不像有20个技术分的人啊~~~
作者: t_mac    时间: 2014-4-13 23:58
建议查询 封装 为一个方法, 返回值为int 找到 了  返回对应 的index  找不到 返回-1  通过返回值做if判断 这样会更加清晰~
作者: 路西法    时间: 2014-4-14 00:11
给个技术分


package day02;

import java.util.Scanner;
public class heima01 {
public static void main(String[] args) {
  Scanner reader=new Scanner(System.in);//调用Scanner类,用来接收用户输入的数据
  double[] score; //创建数组,存放学生成绩
  int n;  //学生个数
  System.out.println("请您输出要存入的学生成绩个数:");
  n=reader.nextInt();
  if(n<0)
        System.out.println("您所输入的学生成绩个数为:"+n+",这是错误的!!!");
  else{
        score=new double[n];
        for(int i=0;i<n;i++)  //为学生成绩数组赋值
       {
        System.out.println("请您输入第"+(i+1)+"个学生的成绩:");
        score[i]=reader.nextDouble();
       }
       System.out.println("您想查找分数为多少的学生成绩?");
       int m=reader.nextInt();
       Boolean flag= true;
        for(int j=0;j<score.length;j++)
            {
                  if(m==score[j])
                   {
                         System.out.print("你要找的成绩是"+"第"+(j+1)+"个,");
                         flag =false;
                   }
            }
                  if(flag){
                   System.out.print("您所输入的分数值"+m+"超出学生成绩范围!");
                   }
            }


    }
  }







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2