首先,是的,我正在編寫一個介紹編程任務,但是我花了一整天的時間試圖解決這個問題,但取得了一些進展,但沒有成功。排序三個整數
該練習旨在創建一種從最小到最大排序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);
}
}
我覺得我可以很容易地減少,如果報表金額和簡化在上面的代碼中有很多行,但是我想等到我成功後再開始清理程序。此外,該代碼有效,但目標是將其編寫爲靜態方法。因此讓這之後到目前爲止,我開始將其轉換爲靜態方法我嘗試,並已走到這一步:
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]);
}
}
我知道我只能返回一個對象,這就是爲什麼我選擇使用一個數組來存儲三個整數,然後簡單地返回數組中的單個對象。但是,當我嘗試它時,編譯器仍然對我大叫。我在這裏錯過了什麼?我覺得它非常明顯,但是當我一遍又一遍地檢查它時,有些東西沒有點擊。如果我能夠朝正確的方向發展,我將非常感激!
謝謝!這真的爲我解決了。現在我的工作已經完成,唯一需要處理的事情就是不得不返回。我做了你推薦的更改,但編譯器對我感到不滿,因爲我沒有在排序方法中返回任何東西。我真的不需要,那麼圍繞它呢?或者我應該只是爲了讓它開心而回報n1?我們仍然在學習靜態方法,但如果方法不是無效的,那是否意味着我必須返回一個對象? – 2014-10-19 02:49:02
如果方法返回類型不是void,則必須返回指定的返回類型。看看我的答案,看看我是如何宣佈這個方法的? '公共靜態無效排序'。改變你的代碼也是如此。如果你只是想要一個函數來打印一些東西而不返回任何東西,那麼把它作爲'void'類型。 – Tetramputechture 2014-10-19 02:51:03
好的!我沒有注意到你寫了'void',並錯誤地再次寫了'int sort'。這就是拋棄我。非常感謝你! – 2014-10-19 02:54:12