Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
[家庭作业][Java]在5个整数输入中查找最大的数字组合?_Java - Fatal编程技术网

[家庭作业][Java]在5个整数输入中查找最大的数字组合?

[家庭作业][Java]在5个整数输入中查找最大的数字组合?,java,Java,这是我们必须在课堂上做的家庭作业。 正如标题所说,我必须找到一种方法来计算给定5个用户输入的最大数字组合。 即如果用户输入5,6,3,4,2,那么程序将找到最大的数字,即65432 一个问题是,由于我们在类中的位置还很有限,因此不允许使用数组、字符串或循环。基本上,我们只能使用运算符和if语句。 我如何构建一个不包含过多“如果”语句的程序 编辑:基本上我的目标是沿着这些路线 if (num1 >= num2 && num1 >= num3 && num

这是我们必须在课堂上做的家庭作业。 正如标题所说,我必须找到一种方法来计算给定5个用户输入的最大数字组合。 即如果用户输入5,6,3,4,2,那么程序将找到最大的数字,即65432

一个问题是,由于我们在类中的位置还很有限,因此不允许使用数组、字符串或循环。基本上,我们只能使用运算符和if语句。 我如何构建一个不包含过多“如果”语句的程序

编辑:基本上我的目标是沿着这些路线

if (num1 >= num2 && num1 >= num3 && num1 >= num4 && num1 >= num5){
        numV1 = num1;
        if (num2 >= num3 && num2 >= num4 && num2 > num5){
         numV2 = num2;
        if (num3 >= num2 && num3 >= num4 && num3 > num5){
        numV2 = num2;
        if (num4 >= num3 && num4 >= num3 && num4 > num5){
         numV2 = num2;
        if (num5 >= num2 && num5 >= num3 && num5 > num4){
        numV2 = num2;

诸如此类,但这似乎效率极低。

让我们看看我们能做些什么:

int num1 = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
int num5 = 0;

public class Tester {
    int num1 = 0;
    int num2 = 0;
    int num3 = 0;
    int num4 = 0;
    int num5 = 0;

    public static void main(String args[]) {
        new Tester();
    }

    public Tester(){
        checkThisNumber(5);
        checkThisNumber(6);
        checkThisNumber(3);
        checkThisNumber(4);
        checkThisNumber(2);
        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num3);
        System.out.println(num4);
        System.out.println(num5);
    }

    private void checkThisNumber(int n) {
        if (n < num2) {
            num1 = n;
        } else if (n < num3) {
            num1 = num2;
            num2 = n;
        } else if (n < num4) {
            num1 = num2;
            num2 = num3;
            num3 = n;
        } else if (n < num5) {
            num1 = num2;
            num2 = num3;
            num3 = num4;
            num4 = n;
        } else {
            num1 = num2;
            num2 = num3;
            num3 = num4;
            num4 = num5;
            num5 = n;            
        }                
    }   
}
int num1=0;
int num2=0;
int num3=0;
int num4=0;
int num5=0;
公共类测试员{
int num1=0;
int num2=0;
int num3=0;
int num4=0;
int num5=0;
公共静态void main(字符串参数[]){
新测试仪();
}
公共测试人员(){
检查此号码(5);
检查该号码(6);
检查此号码(3);
检查该号码(4);
检查此号码(2);
系统输出打印项次(num1);
系统输出打印项数(num2);
系统输出打印项次(num3);
系统输出打印LN(num4);
System.out.println(num5);
}
私有void checkThisNumber(整数n){
if(n
这是一个非常粗糙的排序算法。如果因为无法使用构造函数和方法而需要使其更加简单:

public static void main(String args[]) {
    int num1 = 0;
    int num2 = 0;
    int num3 = 0;
    int num4 = 0;
    int num5 = 0;
    int tNum1 = 5;
    int tNum2 = 6;
    int tNum3 = 3;
    int tNum4 = 4;
    int tNum5 = 2;
    num5 = tNum1;
    if (tNum2 < num5){
        num4 = tNum2;
    } else {
        num4 = num5;
        num5 = tNum2;
    }
    if (tNum3 < num4){
        num3 = tNum3;
    } else if (tNum3 < num5) {
        num3 = num4;
        num4 = tNum3;
    } else {
        num3 = num4;
        num4 = num5;
        num5 = tNum3;
    }
    if (tNum4 < num3){
        num2 = tNum4;
    } else if (tNum4 < num4){
        num2 = num3;
        num3 = tNum4;
    } else if (tNum4 < num5){
        num2 = num3;
        num3 = num4;
        num4 = tNum4;            
    } else {
        num2 = num3;
        num3 = num4;
        num4 = num5;
        num5 = tNum4;
    }
    if (tNum5 < num2){
        num1 = tNum5;
    } else if (tNum5 < num3){
        num1 = num2;
        num2 = tNum5;            
    } else if (tNum5 < num4){
        num1 = num2;
        num2 = num3;
        num3 = tNum5;
    } else if (tNum5 < num5){
        num1 = num2;
        num2 = num3;
        num3 = num4;
        num4 = tNum5;
    } else {
        num1 = num2;
        num2 = num3;
        num3 = num4;
        num4 = num5;
        num5 = tNum5;                 
    }
    System.out.println(num1);
    System.out.println(num2);
    System.out.println(num3);
    System.out.println(num4);
    System.out.println(num5);
}
publicstaticvoidmain(字符串参数[]){
int num1=0;
int num2=0;
int num3=0;
int num4=0;
int num5=0;
int-tNum1=5;
int-tNum2=6;
int-tNum3=3;
int-tNum4=4;
int-tNum5=2;
num5=tNum1;
if(tNum2
就这项运动而言,正确的解决方案是:

public static void main(String args[]) {
    List<Integer> list = new ArrayList<>();
    list.add(5);
    list.add(6);
    list.add(3);
    list.add(4);
    list.add(2);
    Collections.sort(list);
    for (Integer i : list) {
        System.out.println(i);
    }
}
publicstaticvoidmain(字符串参数[]){
列表=新的ArrayList();
增加(5);
增加(6);
增加(3);
增加(4);
增加(2);
集合。排序(列表);
for(整数i:列表){
系统输出打印LN(i);
}
}

好吧,既然你的教授拿走了大部分闪亮的工具箱,恐怕你剩下的就是过多的
if
语句…@Coffee:“我该如何构建一个不包含过多“if”语句的程序?”这正是你的建议。他正试图找到一种替代丑陋代码的方法,我个人认为这是令人钦佩的。太糟糕了,正如Makoto所说,所有闪亮的工具都被拿走了。为什么老师要教糟糕的编码实践?我想不起来了。既然问题已经解决了,我会在这里发帖:如果每个输入都是一位数字,那么你可能会注意到最大的数字是前面五位数字中最大的一位。所以它基本上是一种。您要做的是采用一种排序算法(任何排序算法,真的;我投票赞成选择排序),然后展开它。这将是痛苦的。这是坏代码,你的教授是个虐待狂。但这是唯一一种没有循环和递归的方法。如果“输入”可能大于一个数字。。。这不是施虐,这不是锻炼。这是错误的教学。此问题的正确解决方案是使用ArrayList和Collections.sort()。就像在艺术课上用汽车喷漆器教绘画一样。谢谢你,老兄!这也是我提出的解决方案,但您的代码比我的代码要整洁得多。哈哈哈请注意:解决方案1和3忽略插入顺序。而解决方案2没有。