Java 对三个整数排序
首先,是的,我正在做一个编程入门作业,然而我花了一整天的时间试图解决这个问题,虽然取得了一些进展,但没有成功 练习是创建一个方法,将3个整数从最小到最大排序。我们不鼓励使用阵列,但在这一点上,我不知道如果没有阵列的帮助,我将如何实现这一点 我一开始只是想弄清楚如何对3个整数进行“排序”,这就是我想到的:Java 对三个整数排序,java,arrays,sorting,Java,Arrays,Sorting,首先,是的,我正在做一个编程入门作业,然而我花了一整天的时间试图解决这个问题,虽然取得了一些进展,但没有成功 练习是创建一个方法,将3个整数从最小到最大排序。我们不鼓励使用阵列,但在这一点上,我不知道如果没有阵列的帮助,我将如何实现这一点 我一开始只是想弄清楚如何对3个整数进行“排序”,这就是我想到的: public class SortInteger { public static void main(String[]args) { int a = Integer.p
public class SortInteger {
public static void main(String[]args) {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int c = Integer.parseInt(args[2]);
int n1, n2, n3 = 0;
if (a < b && a < c) { n1 = a; }
else if (b < a && b < c) { n1 = b; }
else { n1 = c; }
if (a > b && a > c) { n3 = a; }
else if (b > a && b > c) { n3 = b; }
else { n3 = c; }
if (n1 < a && a < n3) { n2 = a; }
else if (n1 < b && b < n3) { n2 = b; }
else {n2 = c;}
System.out.println( n1 + " " + n2 + " " + n3);
}
}
公共类排序器{
公共静态void main(字符串[]args){
inta=Integer.parseInt(args[0]);
intb=Integer.parseInt(args[1]);
intc=Integer.parseInt(args[2]);
int n1,n2,n3=0;
如果(ab&&a>c){n3=a;}
如果(b>a&&b>c){n3=b;}
else{n3=c;}
如果(n1
我觉得我可以很容易地减少if语句的数量并简化上面代码中的许多行,但是我想等到我成功后再开始清理程序。同样,该代码可以工作,但目标是将其作为静态方法编写。因此,在取得这一成果之后,我开始尝试将其转换为静态方法,并取得了这一成果:
public class SortInteger2 {
public static int sort(int a, int b, int c) {
int []s = new int [3];
if (a < b && a < c) { s[0] = a; }
else if (b < a && b < c) { s[0] = b; }
else {s[0] = c;}
if (a > b && a > c) { s[2] = a; }
else if (b > a && b > c) { s[2] = b; }
else {s[2] = c;}
if (s[0] < a && a < s[2]) { s[1] = a; }
else if (s[0] < b && b < s[2]) { s[1] = b; }
else {s[1] = c;}
return s[]; //I dont know how to return an array, this didnt work for me
}
public static void main(String[]args) {
int A = Integer.parseInt(args[0]);
int B = Integer.parseInt(args[1]);
int C = Integer.parseInt(args[2]);
int []S = new int [3];
S = sort(A,B,C);
System.out.println(S[0] + " " + S[1] + " " + S[2]);
}
}
公共类SortInteger2{
公共静态整数排序(整数a,整数b,整数c){
int[]s=新的int[3];
如果(ab&&a>c){s[2]=a;}
如果(b>a&&b>c){s[2]=b;}
else{s[2]=c;}
如果(s[0]
我知道我只能返回单个对象,这就是为什么我选择使用数组来存储三个整数,然后只返回单个对象,即数组。然而,当我尝试它时,编译器仍然对我大喊大叫。我错过了什么?我觉得这很明显,但当我一遍又一遍地检查它时,有些东西并没有发出咔哒声。如果我能被引导到正确的方向,我将非常感激 “我觉得我可以很容易地减少if语句的数量,并简化上述代码中的许多行,”
您可以继续使用a、b、c,而不是创建新的变量,并根据它们的比较来交换它们,但除此之外,没有太多的减少
同样,该代码可以工作,但目标是将其作为静态方法编写
为什么不这样做呢
public static void sort(int a, int b, int c) {
...
System.out.println( n1 + " " + n2 + " " + n3);
}
public static void main(String[] args) {
sort(2, 5, 9);
}
如果仍打算使用数组,请将sort
的返回值更改为int[]
。然后,将行returns[]
更改为returns
,表示您正在返回数组 你们很接近
您只需将sort
方法的返回类型从int
更改为int[]
,表示您正在返回整数数组。然后,在返回行返回s[]代码>将s[]
更改为s
。您不需要括号,因为您将返回整个数组
我运行了这个,它为我工作。谢谢!这对我来说真的很清楚。现在我已经开始工作了,唯一要做的就是回去。我做了您建议的更改,但是编译器对我感到不安,因为我没有在排序方法中返回任何内容。我真的不需要这么做,那么这附近有没有其他原因?或者我应该只是为了让它开心而投一个回报吗?我们仍在学习静态方法,但如果该方法不是void,这是否意味着我必须返回一个对象?如果该方法返回类型不是void,则必须返回指定的返回类型。看看我的答案,看看我是如何声明这个方法的<代码>公共静态无效排序
。在你的代码中也要改变这一点。如果您只想让函数打印某些内容而不返回任何内容,请将其设置为void
。啊,好的!我并没有注意到您再次编写了void
并错误地编写了int-sort
。这就是让我不高兴的地方。非常感谢你!