【问题标题】:Java arrays code in max and min最大值和最小值中的 Java 数组代码
【发布时间】:2015-03-08 09:23:40
【问题描述】:

我的项目是要找出学生成绩和他们的成绩的平均值、最小值和最大值,但它一直在输出中显示错误。


以下是姓名和等级:

学生:

Alia Nahid Eiman Suad Lamia Salma Mai Wedad Haya Sanaa

测验:

10 20 50 70 80 50 30 90 60 40

期中考试:

30 80 100 40 80 70 70 80 50 30

期末考试:

40 80 70 100 90 60 70 50 40 80

这里是 Java 代码:

package java_final_project;

import java.util.*;

public class Java_Final_Project {
    static Scanner console = new Scanner(System.in);

    public static void main(String[] args) {
        // Declare inputs:
        String letter1, letter2, letter3;
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;

        // Declare the four array structures
        int[] quiz = new int[10];
        int[] midterm = new int[10];
        int[] finalexam = new int[10];
        String[] students = new String[10];  

        // Input elements to the arrays
        int counter, sum1 = 0;
        int sum2 = 0;
        int sum3 = 0;
        double ave1, ave2, ave3;
        int max1, max2, max3;
        int min1, min2, min3;

        for (counter = 0; counter < 10; counter++) {
            System.out.println ("Enter student names and grades of quiz, midterm "
                + "and final with space between them");
            students[counter] = console.next();
            quiz[counter] = console.nextInt();
            sum1 = sum1 + quiz[counter];
            midterm[counter]= console.nextInt();
            sum2 = sum2 + midterm[counter];
            finalexam[counter]= console.nextInt();
            sum3 = sum3 + finalexam[counter];
        }

        ave1 = sum1 / 10;
        ave2 = sum2 / 10;
        ave3 = sum3 / 10;

        // min and max values
        max1 = Math.max(quiz[counter], max);
        max2 = Math.max(midterm[counter], max);
        max3 = Math.max(finalexam[counter], max);

        min1 = Math.min(quiz[counter], min);
        min2 = Math.min(midterm[counter], min);
        min3 = Math.min(finalexam[counter], min);

        // if statement for the standing
        // ave1
        if (ave1 >= 90 && ave1 <= 100) {
            letter1 = "E";
        } else if (ave1 >= 70 && ave1 <= 80) {
            letter1 = "G";
        } else if (ave1 >= 50 && ave1 <= 60) {
            letter1 = "S";
        } else {
            letter1 = "P";
        }

        // ave2
        if (ave2 >= 90 && ave2 <= 100) {
            letter2 = "E";
        } else if (ave2 >= 70 && ave2 <= 80) {
            letter2 = "G";
        } else if (ave2 >= 50 && ave2 <= 60) {
            letter2 = "S";
        } else {
            letter2 = "P";
        }

        //ave3
        if (ave3 >= 90 && ave3 <= 100) {
            letter3 = "E";
        } else if (ave3 >= 70 && ave3 <= 80) {
            letter3 = "G";
        } else if (ave3 >= 50 && ave3 <= 60) {
            letter3 = "S";
        } else {
            letter3 = "P";
        }

        // Display the elements of the four arrays  
        System.out.println("Here is the elements of the four arrays");
        System.out.println("students" + "\t" + "quiz" + "\t" + "midterm" + "\t" + "finalexam");
        for (counter = 0; counter < 10; counter++) {
            System.out.println(students[counter] + "\t" + quiz[counter] + "\t" + midterm[counter] + "\t" + finalexam[counter]);
        }
        System.out.println("Summary Report:");
        System.out.println();
        System.out.println("students" + "\t" + "\t" + "Quiz" + "\t" + "\t" + "Midterm" + "\t" + "\t" + "FinalExam");
        System.out.println();
        System.out.println("Average" + "\t" + "\t" + ave1 + "\t" + "\t" + ave2 + "\t" + "\t" + ave3);
        System.out.println();
        System.out.println("Max" + "\t" + "\t" + max1 + "\t" + "\t" + max2 + "\t" + "\t" + max3);
        System.out.println();
        System.out.println("Min" + "\t" + "\t" + min1 + "\t" + "\t" + min2 + "\t" + "\t" + min3);
        System.out.println();
        System.out.println("Standing" + "\t" + "\t" + letter1 + "\t" + "\t" + letter2 + "\t" + "\t" + letter3);
    }
}

【问题讨论】:

  • 如果您不告诉我们错误是什么,很难帮助您找到它。
  • 试试这个。将 max1、max2 和 max3 初始化为整数值。然后: max1 = Math.max(quiz[counter], max1); max2 = Math.max(midterm[counter], max2); max3 = Math.max(finalexam[counter], max3);
  • 你应该把它转换成 double ave1 = sum1/10; ave2 = sum2/10; ave3 = sum3/10;
  • 你所说的“站立”的东西似乎是以一种非常奇怪的方式计算出来的。这实际上应该是什么意思?
  • 它告诉我他们是 max1 、 2 和 3 @DavidWallace 的错误

标签: java arrays max average min


【解决方案1】:

您设置min1, min2, min3, max1, max2, max3 的六行需要向上,在您收集输入的for 循环内;因为您想在每次输入后检查它是否大于或小于当前最大值和最小值。目前你有这些行的地方,它们不可能工作,因为counter 不再指向数组中的一个条目。

【讨论】:

  • because there is no such variable as counter 是的。 counter 在 for 循环之外声明,并且在上述行中将具有值 10。这可能会导致ArrayIndexOutOfBoundsException。
  • @Tom - 好的,谢谢,我没发现。出于某种原因,我认为他/她已经在 for 循环中声明了它。我会解决的。
  • 我猜是因为这是正确的方法? :D 在循环之外使用counter 会给他带来一些问题。
【解决方案2】:

我不确定您是否可以在作业中使用流。如果你是,那么在 Java 8 中获得最小值、最大值和平均值的方法要简单得多:

int[] scores = {1, 3, 6, 8, 10, 11, 2};
int max = Arrays.stream(scores).max();
int min = Arrays.stream(scores).min();
int avg = Arrays.stream(scores).average();

既然 Java 有流,你真的不需要经常使用循环。

【讨论】:

    【解决方案3】:

    我已经找出了代码并纠正了一些错误。这是更新的java代码,它有效:D!我感谢您的 cmets 和帮助:)

    package java_final_project;
    
    
    
    import java.util.*;
    
    public class Java_Final_Project
    
    
    
    {
    
    static Scanner console = new Scanner(System.in);
    
    public static void main(String[] args)
    
    
    
    {
        // Declare inputs:
        String letter1, letter2, letter3;
        double ave1, ave2, ave3;
    
        // Declare the four array structures
        int[] quiz = new int[10];
        int[] midterm = new int[10];
        int[] finalexam = new int[10];
        String [] students = new String[10]; 
        int [] scores = new int[100]; 
    
        // Input elements to the arrays
        int counter, sum1=0;
        int sum2=0;
        int sum3=0;
    
        for ( counter = 0; counter < 10; counter++)
        {
        System.out.println ("Enter student names and grades of quiz, midterm "
        + "and final with space between them");
    
        students[counter] = console.next();
        quiz[counter]= console.nextInt();
        sum1 = sum1 + quiz[counter];
        midterm[counter]= console.nextInt();
        sum2 = sum2 + midterm[counter];
        finalexam[counter]= console.nextInt();
        sum3 = sum3 + finalexam[counter];                     
        }
    
        // max and min values for the quiz
        int minGrade = quiz[0];
        int maxGrade = quiz[0];
        for (int i = 0; i < 10; i++)
    { 
    if (minGrade > quiz[i])
      minGrade = quiz[i];
    if (maxGrade < quiz[i])
      maxGrade = quiz[i];
    }
    
    // max and min values for the midterm
    int minGrade1 = midterm[0];
    int maxGrade1 = midterm[0];
        for (int i = 0; i < 10; i++)
        { if (minGrade1 > midterm[i])
      minGrade1 = midterm[i];
    if (maxGrade1 < midterm[i])
      maxGrade1 = midterm[i];}
    
    // max and min values for the final
    int minGrade2 = finalexam[0];
    int maxGrade2 = finalexam[0];
    for (int i = 0; i < 10; i++)
    {if (minGrade2 > finalexam[i])
      minGrade2 = finalexam[i];
    if (maxGrade2 < finalexam[i])
      maxGrade2 = finalexam[i];}
    
        //calculate the average of quiz, midterm, final        
        ave1 = sum1/10;
        ave2 = sum2/10;
        ave3 = sum3/10;
    
        // if statement for the standing
        // ave1
            if (ave1 > 90 && ave1 > 100)
            {letter1 = "E";}
           else if (ave1 > 70 && ave1 > 80)
            {letter1 = "G" ;}
           else if (ave1 > 50 && ave1 > 60)
            {letter1 = "S";}
           else 
           {letter1 = "P";}
    
        // ave2
           if (ave2 > 90 && ave2 > 100)
            {letter2 = "E";}
           else if (ave2 > 70 && ave2 > 80)
            {letter2 = "G" ;}
           else if (ave2 > 50 && ave2 > 60)
            {letter2 = "S";}
           else 
           {letter2 = "P";}
    
        //ave3
           if (ave3 > 90 && ave3 > 100)
            {letter3 = "E";}
           else if (ave3 > 70 && ave3 > 80)
            {letter3 = "G" ;}
           else if (ave3 > 50 && ave3 > 60)
            {letter3 = "S";}
           else 
           {letter3 = "P";}
    
       // Display the elements of the four arrays  
        System.out.println (" Here is the elements of the four arrays");
        System.out.println ("students"+"\t"+"quiz"+"\t"+"\t"+"midterm"+"\t"+"\t"+"finalexam");
        for ( counter = 0; counter < 10; counter++)
        {
    
        System.out.println (students[counter]+"\t"+"\t"+quiz[counter]+"\t"+"\t"+midterm[counter]
                +"\t"+"\t"+finalexam[counter]);
    
        }
    
         System.out.println ("  ");
         System.out.println ("Summary Report:");
         System.out.println ("\t"+"\t"+"Quiz"+"\t"+"\t"+"Midterm"+"\t"+"\t"+"FinalExam");
         System.out.println ("Average"+"\t"+"\t"+ave1+"\t"+"\t"+ave2+"\t"+"\t"+ave3);
         System.out.println ("max"+ "\t"+"\t"+maxGrade+ "\t"+"\t"+ maxGrade1+ "\t"+"\t"+ maxGrade2);
         System.out.println ("min"+ "\t"+"\t"+minGrade+ "\t"+"\t"+ minGrade1+ "\t"+"\t"+ minGrade2);
         System.out.println ();
         System.out.println ("Standing"+ "\t"+ letter1+ "\t"+ "\t"+ letter2+ "\t"+"\t"+ letter3);
    }    
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 2013-12-06
      • 2017-03-16
      • 2016-11-12
      • 1970-01-01
      • 2022-12-02
      相关资源
      最近更新 更多