java - [作业][Java] 找出 5 个整数输入中最大的数字组合?

标签 java

这是我们必须在类里面完成的家庭作业。 正如标题所说,我必须找到一种方法来计算给定 5 个用户输入的最大数字组合。 IE中如果用户输入5,6,3,4,2那么程序会找到最大的数字,所以65432。

有一个问题是,由于我们目前只在类里面学习,所以我们不允许使用数组、字符串或循环。基本上我们只能使用运算符和 if 语句。 我将如何构建一个不包含过多“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;            
        }                
    }   
}

这是一个非常粗糙的排序算法。如果您需要使其变得更加简单,因为您无法使用构造函数和方法:

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);
}

就运动而言,正确的解决方案是:

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);
    }
}

关于java - [作业][Java] 找出 5 个整数输入中最大的数字组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182913/

相关文章:

java - Java 中阻塞线程的监控和终止

java - itext 将 PDF 分割成多个 PDF,但大小相同

java - 使用 "code"配置自动连接服务注入(inject)

java - Java 8 中的深度优先目录流

java - JSON Extractor - 提取数据 - 无法应用于原始数据

java - JPA 获取重复的行(结果都具有相同的值)

java - 是什么导致了这个 StackOverflowError?

java - 从字符串中删除除数字和度数符号之外的所有特殊字符?

Java - 为什么显示 2 个版本?

java - 重新加载 xml 文件后重新加载 GUI