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