在Java中查找没有ARRAY的最小值和最大值

时间:2015-10-16 00:17:58

标签: java

为AP计算机科学做一个项目,我仍然没有设法弄清楚如何做这个部分:

该程序应该询问用户5个测试分数输入,然后代码将“曲线”通过取得分的平方根输入的最小值并将平方根的整数值加到原始分数。我已经想出了如何进行数学运算以及其他所有内容,但我不知道如何找到输入的最小分数。老师特意说没有阵列或收藏品。

我的int变量是score1,score2,score3,score4和score5。假设用户输入75为score1,32为得分2,42为得分3,99为得分4,100为得分5.如何让它为得分2做曲线功能(我已经做过),因为它是最低价值。我已经设置了扫描仪和所有内容,我只是不知道如何获得最小(和最大)值。

谢谢!

6 个答案:

答案 0 :(得分:1)

我以前见过。 (呵呵)

这里的键是Math类。 Math.MinMath.Max仅接受两个参数,但可以扩展为无限期地工作。

这是一个包含3个变量的示例。 int var1, var2, var3;

int max = Math.max(var1, Math.max(var2, var3));
int min = Math.min(var2, Math.max(var2, var3));
int middle = var1 + var2 + var3 - max - min

我可以用超过3个来做到这一点,但是有点混乱。 这是有关imgur的有用的视觉效果。 Direct Album

我将从此处将Math.Max缩短为max(),将Math.min()缩短为min。


// a, b, c, d = int

max1 = max(a, b)
max2 = max(c, d)
min1 = min(a, b)
min2 = min(c, d)

max = max(max1, max2)
mid_high = max(min1, min2)
mid_low = min(max1, max2)
min = min(min1, min2)

这也适用于3个参数。

max1 = max(a, b)
max2 = max(b, c) // or a, c : doesn't matter, as long as you have all three argument
min1 = min(a, b)
min2 = min(b, c) // or a, c : doesn't matter, as long as you have all three argument
mid = min(max1, max2)
mid = max(min1, min2)

希望您今天学了一种新技术

答案 1 :(得分:0)

int n1, n2, n3, n4, max = 0;

// get values of from input or assign it to n1, n2, n3 and n4

if (n1 > max)
max = n1;
if (n2 > max)
max = n2;
if (n3 > max)
max = n3;
if (n4 > max)
max = n4;

System.out.println(max);

答案 2 :(得分:0)

        /*
    Problem Statement:- Enter many positive numbers & find Maximum & Minimum number entered & also total numbers entered.
    */
             import java.util.*;
             public class MathOperations {
                public static void main(String args[]) {
                    //Variables
                    double flag=0,count=0,max=0,min=0;
                    
                    //Creating Scanner class Object
                    Scanner scan = new Scanner(System.in);
                    
                    while (true) {
                    //Taking input from user
                    System.out.println("Enter a double number (negative to quit) : ");
                    double number = scan.nextDouble();
                        if (number > 0) {
                            count++;
                            max = Math.max(max,number);
                            if (flag == 0) {
                                min = number;
                                flag++;
                            } else {
                                min = Math.min(min,number);
                            }
                        } else {
                            break;
                        }
                    }
                    System.out.println("Total Numbers entered: "+count);
                    System.out.println("Maximum: "+max);
                    System.out.println("Minimum: "+min);        
                }
             }

答案 3 :(得分:-1)

您可以使用以下代码段:

int min = Integer.MAX_VALUE; //As per given requirement 'min' can be set to any value >=100
int max = Integer.MIN_VALUE; //As per given requirement 'max' can be set to any value <=0

try(Scanner input = new Scanner(System.in))
{
     int inValue;
     for(int i=0; i<5; i++) 
     {
         inValue = input.nextInt();
         if(inValue < min) min = inValue;
         if(inValue > max) max = inValue;
     }
}
System.out.println("Minimum value is : " + min);
System.out.println("Maximum value is : " + max);

看到它正常工作here

答案 4 :(得分:-2)

在我看来,问题意味着你在不使用数组的情况下跟踪每个输入的最小值和最大值,

 Scanner sc = new Scanner(System.in);
 int min = -1, max = -1;
 int input;
 for(int i=0; i<5; i++) {
     input = sc.nextInt();
     if(input < min) min = input;
     if(input > max) max = input;
 }
 // here you have min and max number from the inputs and can perform the curve function

答案 5 :(得分:-3)

你可以试试这个:

int s1, s2, s3, s4, s5;
s1 = 75;
s2 = 32;
s3 = 42;
s4 = 99;
s5 = 100;

int min = s1;
min = (min < s2) ? min : s2;
min = (min < s3) ? min : s3;
min = (min < s4) ? min : s4;
min = (min < s5) ? min : s5;
System.out.println(min);