1004

开始打算这样判断,这样有问题,就是输入三行数据且中间值为最大值时,输出j=2,明显错误。

package com.company;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws  Exception{
    // write your code here
        Scanner sc=new Scanner(System.in);
        int n=Integer.parseInt(sc.nextLine());
        String[][] nameId=new String[n][3];
        int i,j;
        int[] score=new int[n];
        //全部输入
        for(i=0;i<n;i++){
            nameId[i][0]=sc.next();
            nameId[i][1]=sc.next();
            score[i]=sc.nextInt();
            nameId[i][2]=Integer.toString(score[i]);
        }
        bgm:for(j=0;j<n;j++){
            //将输入内容输出
            //System.out.println(nameId[j][0]+" "+nameId[j][1]+" "+nameId[j][2]);
            //判断最高成绩
            if(score[0]>score[j]){
                j=0;
                break ;
            }
            if(score[n-1]>score[j]){
                j=n-1;
                break ;
            }
            for (int x = 0; x < j; x++) {
                for (int y = j + 1; y < n; y++) {
                    if ((score[j] > score[x]) & (score[j] > score[y])) {

                        break bgm;
                    }
                }
            }

        }
        System.out.println(j);//输出最大值下标



    }
}

想办法改进

package com.company;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws  Exception{
    // write your code here
        Scanner sc=new Scanner(System.in);
        int n=Integer.parseInt(sc.nextLine());
        String[][] nameId=new String[n][3];
        int i,j,k;
        int[] score=new int[n];
        //全部输入
        for(k=0;k<n;k++){
            nameId[k][0]=sc.next();
            nameId[k][1]=sc.next();
            score[k]=sc.nextInt();
            nameId[k][2]=Integer.toString(score[k]);
        }
        
        //输出最大值i
        int max=score[0];
        for(i=0;i<n;i++){
            if(score[i]>=max) {
                max=score[i];
            }
        }
        for(i=0;i<n;i++) {
            if(max==score[i]) {
                break;
            };
        }
        
      //输出最小值j
        int min=score[0];
        for(j=0;j<n;j++){
            if(score[j]<=min) {
                min=score[j];
            }
        }
        for(j=0;j<n;j++) {
            if(min==score[j]) {
                break;
            };
        }
        //输出结果
        System.out.println(nameId[i][0]+" "+nameId[i][1]);
        System.out.println(nameId[j][0]+" "+nameId[j][1]);
    }
}

其实简单改造之后,就能达到目的,之前想的太复杂,大道至简。

posted @ 2018-09-21 23:03  博客园机器人  阅读(350)  评论(0编辑  收藏  举报