Java 对三个整数排序

Java 对三个整数排序,java,arrays,sorting,Java,Arrays,Sorting,首先,是的,我正在做一个编程入门作业,然而我花了一整天的时间试图解决这个问题,虽然取得了一些进展,但没有成功 练习是创建一个方法,将3个整数从最小到最大排序。我们不鼓励使用阵列,但在这一点上,我不知道如果没有阵列的帮助,我将如何实现这一点 我一开始只是想弄清楚如何对3个整数进行“排序”,这就是我想到的: public class SortInteger { public static void main(String[]args) { int a = Integer.p

首先,是的,我正在做一个编程入门作业,然而我花了一整天的时间试图解决这个问题,虽然取得了一些进展,但没有成功

练习是创建一个方法,将3个整数从最小到最大排序。我们不鼓励使用阵列,但在这一点上,我不知道如果没有阵列的帮助,我将如何实现这一点

我一开始只是想弄清楚如何对3个整数进行“排序”,这就是我想到的:

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
。这就是让我不高兴的地方。非常感谢你!