不用数组可以用集合
定义一个Student类,包括姓名,得分等属性
用一个集合如List<Student>保存数据
之后的统计就不说了

解决方案 »

  1.   

    List<Student>  然后 实现 Comparator  接口进行元素排序 
      

  2.   

    package big;import java.util.Scanner;class Student
    {
    String name;
    int score; public void read()
    {
    Scanner input = new Scanner(System.in);
    name = input.next();
    score = input.nextInt();
    } public void print()
    {
    System.out.println(name + " " + score);
    } public void give(Student stu)
    {
    this.name = stu.name;
    this.score = stu.score;
    }
    }class Re
    {
    public static void main(String[] args)
    {
    int n;
    Scanner input = new Scanner(System.in);
    n = input.nextInt(); Student a = new Student();
    Student b = new Student();
    Student tmp = new Student();

    a.read();
    //System.out.println(a.name);
    for (int i = 0; i < n - 1; ++i)
    {
    tmp.read(); if (tmp.score > b.score)
    {
    if (tmp.score > a.score)
    {
    b.give(a);
    a.give(tmp);
    }
    else
    {
    b.give(tmp);
    }
    }
    } System.out.println();
    a.print();
    b.print();
    }
    }
    练手了。。
      

  3.   

    可以用链表嘛,
    class Student{
        private Student nextStu;
        private String name;
        private float score;
        ........
    }
    不过这样的话查询的效率会很低。
    用数组查询的效率会比较高。
    用集合类会很方便的。
      

  4.   

    写个了用Map实现的:
    import java.util.*;
    import java.util.regex.MatchResult;public class Transcript {
    public static void main(String[] args) {
    final int num;
    TreeMap<Float, String> map = new TreeMap<Float, String>();
    System.out.print("输入学生人数:");
    Scanner scanner = new Scanner(System.in);
    num = scanner.nextInt();
    for(int i = 0; i < num; i++) {
    System.out.print("输入学生" + (i + 1) + " 姓名和分数:");
    scanner = new Scanner(System.in);
    String pattern = "(\\p{InCJK Unified Ideographs}+)" + "(\\d+)";
    scanner.next(pattern);
    MatchResult match = scanner.match();
    float score = Float.parseFloat(match.group(2));
    String name;
    if(map.containsKey(score)) 
     name = map.get(score) + ", " + match.group(1);
    else
    name = match.group(1);
    map.put(score, name);
    }
    String first = "1." + map.get(map.lastKey()) + ": " + map.lastKey() + "\n";
    String second = "2." + map.get(map.lowerKey(map.lastKey())) + ": " +
    map.lowerKey(map.lastKey());
    System.out.println(first + second);
    }
    }
      

  5.   

    我是java初学者,这个程序要求只用一个简单的main()方法,用循环语句编写。
      

  6.   

    只用main的方法:
    1、定义一个student对象,属性你题目里给出了
    2、main里面定义两个student对象的变量,记录最高/第二高的
    3、对于每个用户的输入,按规则和前面两个变量比较
       a、比最高高的,第二高==最高,最高==新输入
       b、比最高低,比第二高高的,第二高=新输入
       c、都低的,不管
    4、输出最高/第二高
      

  7.   

    public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int n = 0;
            while (n < 1){
             try{
             n = input.nextInt();
             } catch(Exception e){
             n = 0;
             }
            }
            String name1 = "";
            int score1 = 0;
            String name2 = "";
            int score2 = 0;
            
            for (int i = 0; i < n; ){
             String line = input.nextLine();
             String currentName = line.split(" ")[0];
             int currentScore = 0;
             try {
             currentScore = Integer.parseInt(line.split(" ")[1]);
             } catch (Exception e){
             continue;
             }
             if (currentScore > score1){
             score2 = score1;
             name2 = name1;
             score1 = currentScore;
             name1 = currentName;
             }
             else if (currentScore > score2){
             score2 = currentScore;
             name2 = currentName;
             }        
             i+=1;
            }
    System.out.printf("%s %d\r\n%s %d", name1, score1,name2, score2);
    }
      

  8.   

    既然是初学,我写了个简单的,实际应用要加上对输入数据的检测。
    import java.util.*;
    public class Test1
    {
      public static void main(String args[])
      {
    Scanner scan = new Scanner(System.in);
    System.out.print("输入学生人数:");
    int n = scan.nextInt();
    String name="",nameTop="",nameTop2="";
    int score=0,scoreTop=0,scoreTop2=0;
            for (int i=0; i<n; i++) {
    System.out.print("输入学生" + (i + 1) + " 姓名:");
    name = scan.next();
    System.out.print("输入学生" + (i + 1) + " 分数:");
    score = scan.nextInt();
    if(score>scoreTop){
    scoreTop=score;
    nameTop=name;
    }
    if(score>scoreTop2 && score<scoreTop){
    scoreTop2=score;
    nameTop2=name;
    }
            }
            System.out.printf("最高分姓名 %s 成绩 %d\n",nameTop,scoreTop);
            System.out.printf("第二高分姓名 %s 成绩 %d",nameTop2,scoreTop2);
         }
    }
      

  9.   

    改了改,应如下:import java.util.*;
    public class Test1
    {
      public static void main(String args[])
      {
    Scanner scan = new Scanner(System.in);
    System.out.print("输入学生人数:");
    int n = scan.nextInt();
    String name="",nameTop="",nameTop2="";
    int score=0,scoreTop=0,scoreTop2=0;
            for (int i=0; i<n; i++) {
    System.out.print("输入学生" + (i + 1) + " 姓名:");
    name = scan.next();
    System.out.print("输入学生" + (i + 1) + " 分数:");
    score = scan.nextInt();
    if(score>scoreTop){
    scoreTop2=scoreTop;nameTop2=nameTop;
    scoreTop=score;nameTop=name;
    }
    else if(score>scoreTop2) {scoreTop2=score;nameTop2=name;}
    }
            System.out.printf("前两名是 姓名 %s 成绩 %d\n 姓名 %s 成绩 %d",nameTop,scoreTop,nameTop2,scoreTop2);
         }
    }