Mayo
Mayo

Reputation: 13

After multiple data values are provided, what code can be written to compare the data and determine the highest/lowest values? Java

I looked for answers on this website that have to do with finding the highest/lowest data values in a program, but all I found was code that had to do with arrays. There are no arrays in my code, so I would assume that the technique for finding out a highest value or lowest value would be executed differently.

If you look at my code, you can see on the bottom of the output that there are two lines that say:

The highest performance score was: 0
The lowest performance score was: 0

I simply do not know how to use code in order to output the highest performance score or the lowest performance score. Instead of those 0's, I want the two performance scores from the two computers being analyzed compared and shown. So again, instead of the 0's in the output, I want it to be:

The highest performance score was: 15400.000000000002
The lowest performance score was: 13000.0

So how do I execute this? All help is appreciated.

Output:

How many computers are being processed? 2

Computer Hardware Graphics Quality Recommendation Tool

Enter the clock speed (in Megahertz) of your graphics card: 1000
Enter the clock speed (in Megahertz) of your processor: 2000
Enter the number of cores that your processor has: 4
Monitor resolution menu:
1. 1280 x 720
2. 1920 x 1080
3. 2560 x 1440
4. 3840 x 2160
Please select one of the choices above: 1

GPU Clock Speed: 1000 MHz
CPU Clock Speed: 2000 MHz
Number of cores: 4
Monitor Resolution: 1280 x 720
Performance Score: 13000.0
Recommended Graphics Quality: Medium

The highest performance score was: 0
The lowest performance score was: 0

Computer Hardware Graphics Quality Recommendation Tool

Enter the clock speed (in Megahertz) of your graphics card: 2000
Enter the clock speed (in Megahertz) of your processor: 3000
Enter the number of cores that your processor has: 6
Monitor resolution menu:
1. 1280 x 720
2. 1920 x 1080
3. 2560 x 1440
4. 3840 x 2160
Please select one of the choices above: 3

GPU Clock Speed: 2000 MHz
CPU Clock Speed: 3000 MHz
Number of cores: 6
Monitor Resolution: 2560 x 1440
Performance Score: 15400.000000000002
Recommended Graphics Quality: High

The highest performance score was: 0
The lowest performance score was: 0

My code:

/*
This program will help the user identify and further understand the capabilities of their computer's hardware.
When the program is run, the user will be asked to input facts and information about their computer's hardware.
Once the information about the user's computer hardware is processed by the program,
the user will see results that explain the capabilities and potential of their computer.
In this new edition of the program, the user will have the option to analyze multiple computers, rather than just one.
They will also be able to compare their computer's performance score at the end.
*/

import java.util.Scanner; //This allows the program to utilize the Scanner class to get the user's input.


public class Project2_Ben_Mayo
{
   public static void main(String[] args)
   {


   String title = "Computer Hardware Graphics Quality Recommendation Tool"; //Title string
   int numOfComputers = 0; //To hold the number of computers being tested
   int GPUspeed = 0; //To hold the user's GPU clock speed (in Megahurtz)
   int CPUspeed = 0; //To hold the user's CPU clock speed (in Megahurtz)
   int numCores = 0; //To hold the number of cores in the user's CPU
   int menuChoice = 0; //To hold the user's menu choice
   String monitorRes = ""; //To hold the user's monitor resoltion
   String quality = ""; //To hold the quality of performance while gaming
   double multiplier = 0.0; //To hold the multiplier value
   double performanceScore = 0.0; //To hold the performance score value
   int highestScore = 0;
   int lowestScore = 0;

   Scanner sc = new Scanner(System.in); //This is the scanner object


   System.out.print("\n" + "How many computers are being processed? "); //ask the user to enter the number of computers they would like to test
   numOfComputers = sc.nextInt();

   if (numOfComputers <= 0) { //If the number of computers is less than or equal to 0, this notifies the user that the number of computers must be greater than or equal to 1
   System.out.print("The number of computers being processed must be at least one.");
   }


   //Use for loop to ask the user to enter the information for each computer
   for(int computerNumber = 0; computerNumber < numOfComputers; computerNumber++) { //Begin for loop

   System.out.println("\n" + title); //Print the title

   System.out.print("\n" + "Enter the clock speed (in Megahertz) of your graphics card: "); //This is an indicator of how fast the user's graphics card is
   GPUspeed = sc.nextInt();

   while(GPUspeed < 800 || GPUspeed > 2000) { //While the user provides an invalid input, display an error message and have them re-enter their input
      System.out.print("Invalid input. Plase enter a valid GPU speed: "); //display an error message if the user gave invalid input
      GPUspeed = sc.nextInt(); //re-read in the user's input for the GPU speed
   }


   System.out.print("Enter the clock speed (in Megahertz) of your processor: "); //This is an indicator of how fast the user's processor is
   CPUspeed = sc.nextInt();

    while(CPUspeed < 1000 || CPUspeed > 5500) { //While the user provides an invalid input, display an error message and have them re-enter their input
      System.out.print("Invalid input. Plase enter a valid CPU speed: "); //display an error message if the user gave invalid input
      CPUspeed = sc.nextInt(); //re-read in the user's input for the CPU speed
   }


   System.out.print("Enter the number of cores that your processor has: "); //This is an indicator of how many cores the user's CPU contains
   numCores = sc.nextInt();

    while(numCores < 1 || numCores > 16) { //While the user provides an invalid input, display an error message and have them re-enter their input
      System.out.print("Invalid input. Plase enter a valid number of cores: "); //display an error message if the user gave invalid input
      numCores = sc.nextInt(); //re-read in the user's input for the number of cores
   }



   //Monitor resolution menu
   System.out.println("Monitor resolution menu:");
   System.out.println("1. 1280 x 720");
   System.out.println("2. 1920 x 1080");
   System.out.println("3. 2560 x 1440");
   System.out.println("4. 3840 x 2160");

   System.out.print("Please select one of the choices above: "); //Ask the user to choose the resolution of their monitor
   menuChoice = sc.nextInt();

   while(menuChoice < 1 || menuChoice > 4) { //While the user provides an invalid input, display an error message and have them re-enter their input
      System.out.print("Invalid selection. Plase pick a valid option from the menu: "); //display an error message if the user gave invalid input
      menuChoice = sc.nextInt(); //re-read in the user's input for the menu selection
   }


   //Assign the menu options to their values to enable the menu to funtion correctly
   if (menuChoice == 1) {        //If the user selects menu option number 1, "monitorRes" = "1280 x 720"
      monitorRes = "1280 x 720";
   }
   else if (menuChoice == 2) {   //If the user selects menu option number 2, "monitorRes" = "1920 x 1080"
      monitorRes = "1920 x 1080";
   }
   else if (menuChoice == 3) {   //If the user selects menu option number 3, "monitorRes" = "2560 x 1440"
      monitorRes = "2560 x 1440";
   }
   else if (menuChoice == 4) {   //If the user selects menu option number 4, "monitorRes" = "3840 x 2160"
      monitorRes = "3840 x 2160";
   }


   //This segment will determine what the mulitplier object will be
   if (menuChoice == 1) {
      multiplier = 1;
   }
   else if (menuChoice == 2) {
      multiplier = .75;
   }
   else if (menuChoice == 3) {
      multiplier = .55;
   }
   else if (menuChoice == 4) {
      multiplier = .35;
   }


   //Performance Score multiplier
   performanceScore = ((5 * GPUspeed) + (numCores * CPUspeed)) * multiplier;



   //Recommended graphics quality that the user's hardware can support.
   if (performanceScore >= (17000)) {       //If the performance score is greater than or equal to 17,000, the quality of the performance is ultra
      quality = "Ultra";
   }
   else if (performanceScore >= (15000)) {  //If the performance score is greater than or equal to 15,000, the quality of the performance is high
      quality = "High";
   }
   else if (performanceScore >= (13000)) {  //If the performance score is greater than or equal to 13,000, the quality of the performance is medium
      quality = "Medium";
   }
   else if (performanceScore >= (11000)) {  //If the performance score is greater than or equal to 11,000, the quality of the performance is low
      quality = "Low";
   }
   else if (performanceScore < (11000)) {   //If the performance score is less than 11,000, the quality of the performance is unplayable
      quality = "Unable to Play";
   }


   //Print the results
   System.out.println("\nGPU Clock Speed: " + GPUspeed + " MHz"); //User's GPU speed (in Megahurtz)
   System.out.println("CPU Clock Speed: " + CPUspeed + " MHz"); //User's CPU speed (in Megahurtz)
   System.out.println("Number of cores: " + numCores); //Number of cores that the user's CPU contains
   System.out.println("Monitor Resolution: " + monitorRes); //User's moniter resolution
   System.out.println("Performance Score: " + performanceScore); //The user's computer performance score
   System.out.println("Recommended Graphics Quality: " + quality); //Estimated quality of graphics during gameplay

   System.out.println("\n" + "The highest performance score was: " + highestScore);
   System.out.println("The lowest performance score was: " + lowestScore);

      } //End for loop
   } //End class
} //End main

Upvotes: 0

Views: 83

Answers (1)

rascal
rascal

Reputation: 26

In case you don't want to create a list and store there the performanceScore values, then you can add logic inside the for loop before printing the results in order to store in the variables highestScore and lowestScore the highest and lowest performanceScores you have iterated so far:

if(performanceScore > highestScore) {
    highestScore = performanceScore;
}
if(lowestScore == 0 || performanceScore < lowestScore) {
    lowestScore = performanceScore;
}

Upvotes: 1

Related Questions