【问题标题】:Finding the largest number and smallest number given the user input (METHODS)在给定用户输入的情况下查找最大数和最小数(方法)
【发布时间】:2016-06-21 17:59:52
【问题描述】:

我一直在尝试输入正确的代码以从用户输入中找到最大数字和最小数字这是我到目前为止的代码,我能够找到平均值,有我可以使用的运算符吗? :

package labs;

import java.util.Scanner;

public class Lab7method {

public static double readNumber(Scanner input, String prompt, String errorMessage, boolean toBePositive, boolean askForInteger) {
boolean hasError = true;    // assume to have error
double number = 0;  //initialize number


while (hasError) {
        // Prompt the user to input
        System.out.print(prompt);

        // Check if it is non-numeric data
        if (!input.hasNextDouble()) {   
            // If it is, report the error
            System.out.println(errorMessage);
            input.next();   // throw the input away by reading it
        } else if (askForInteger && !input.hasNextInt()) {
            // report the non-integer error
            System.out.println(errorMessage);
            input.next();   // throw the input away by reading it
        }
        else {
            // read the number
            number = input.nextDouble();

            // if the caller wants only positive number, check for negative or zero
            if (toBePositive && number <= 0)
                System.out.println(errorMessage); // report the error
            else
                // end the error checking loop
                hasError = false;
        }
    }

    // return the number to the caller
    return number;
}

// the really used method
public static int readInteger(Scanner input, String prompt, String errorMessage) {
    // invoke the readNumber() to an integer
    int anInteger = (int)readNumber(input, prompt, errorMessage, false, true);

    // return to the caller
    return anInteger;
}


// the really used method
public static double readDouble(Scanner input, String prompt, String errorMessage) {
    // invoke the readNumber() to do the actual work
    double aNumber = readNumber(input, prompt, errorMessage, false, false);

    // return to the caller
    return aNumber;
}

// the really used read positive double method
public static double readPositiveDouble(Scanner input, String prompt, String errorMessage) {
    // invoke the readNumber() to get a positive floating point number
    double aNumber = readNumber(input, prompt, errorMessage, true, false);

    // return to the caller
    return aNumber;
}

public static int readPositiveInt(Scanner input, String prompt, String errorMessage) {
    int anposInteger = (int) readNumber(input, prompt, errorMessage, true, false);
    return anposInteger;
}

public static void main(String[] args) {
    // Create a Scanner object
    Scanner input = new Scanner(System.in);

    //initial account balance//

    int noofgrades = readPositiveInt(input, "Enter number of grades: ", "Error you did not enter a positive integer:");
    double lowestGrade = 0;
    double highestGrade = 0;    
    double sumOfGrade = 0;
    double grade = 0;



    for (int i = 0; i < noofgrades; i++){           

        double Grade = 0;   
    // monthly interest rate//

    double mograde = readPositiveDouble(input, "Please enter grade " + (i +1) + ": ", "Errorrrrrrrr");


    sumOfGrade += mograde;
    }

    double averagegrade = sumOfGrade/noofgrades;

     // Do I use these -> Double.MAX_VALUE;
     // Do I use these -> Double.MIN_VALUE;     


        System.out.printf("The average of the grades entered are: %4.2f\n"
                            + "The highest grade: %4.2f\n" + "The lowest grade is: %4.2f\n" 
                            , averagegrade, highestGrade, lowestGrade);                                                         

【问题讨论】:

    标签: java methods max min


    【解决方案1】:

    您只需在main 方法的for 循环中添加几个if 语句即可找出最小值和最大值,例如:

    for (int i = 0; i < noofgrades; i++) {
    
        double Grade = 0;
        // monthly interest rate//
    
        double mograde = readPositiveDouble(input, "Please enter grade " + (i + 1) + ": ", "Errorrrrrrrr");
    
        if (i == 0) {
            lowestGrade = mograde;
            highestGrade = mograde;
        } else {
            if (mograde < lowestGrade) {
                lowestGrade = mograde;
            }
            if (mograde > highestGrade) {
                highestGrade = mograde;
            }
        }
    
        sumOfGrade += mograde;
    }
    

    【讨论】:

    • 我接受了你的建议,但运行代码后,我只能打印最高分,但无论我输入什么数字,我的最低分都是 0.00。
    【解决方案2】:

    试试这个例子,输入后立即打印 min max:

       Scanner scanner = new Scanner(System.in);
        int n;
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
    
        while((n = scanner.nextInt()) != Integer.MIN_VALUE){
            max = n>max?n:max;
            min = n<min?n:min;
            System.out.println(String.format("Min: %d. Max %d", min, max));
        }
    

    【讨论】:

      【解决方案3】:

      我运行了它,但只有最高的数字能够打印。最小的数字只打印了 0.00 与我输入的任何输入。

      public static void main(String[] args) {
          // Create a Scanner object
          Scanner input = new Scanner(System.in);
      
          //initial account balance//
      
          int noofgrades = readPositiveInt(input, "Enter number of grades: ", "Error you did not enter a positive integer:");
          double lowestGrade = 0;
          double highestGrade = 0;    
          double sumOfGrade = 0;
          double grade = 0;
      
      
      
          for (int i = 0; i < noofgrades; i++){           
      
      
      
              double Grade = 0;   
          // monthly interest rate//
      
          double mograde = readPositiveDouble(input, "Please enter grade " + (i +1) + ": ", "Errorrrrrrrr");
      
      
      
          if(mograde < lowestGrade){
              lowestGrade = mograde;
          }
      
      
          if(mograde > highestGrade){
              highestGrade = mograde;
          }
      
          sumOfGrade += mograde;
          }
      
          double averagegrade = sumOfGrade/noofgrades;
      
           // Do I use these -> Double.MAX_VALUE;
           // Do I use these -> Double.MIN_VALUE;     
      
      
              System.out.printf("The average of the grades entered are: %4.2f\n"
                                  + "The highest grade: %4.2f\n" + "The lowest grade is: %4.2f\n" 
                                  , averagegrade, highestGrade, lowestGrade);                                                         
      
      
      
      
      
      
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-03
        • 2016-04-11
        • 2016-03-08
        • 1970-01-01
        • 2019-09-21
        • 2016-07-24
        • 1970-01-01
        • 2020-01-08
        相关资源
        最近更新 更多