2012-10-12 99 views
0

我正在嘗試創建一個嵌套for循環,它將生成用戶指定範圍內的所有對,範圍從負值到正值。這是一個有點很難解釋,但這裏是我的代碼有:java - 通過值循環

public class test method { 

    public static void main (String[] args) { 

    int a = Integer.parseInt(args[0]); 
    int b = Integer.parseInt(args[1]); 
    int c = 3; 
    int d = 4; 

    for (int i = -a; i <= a; i++) 
     for (int j = -b; j <= b; j++) { 

      System.out.println(a+" and "+b+" vs "+c+" and "+d+"\n"); 

     } 

    } 

} 

鑑於命令行參數1和2,我所期望的輸出會是這樣的:

-1和-2比3和4

-1和-1 VS 3和4

-1和0對3和4

-1和1比3和4

-1和2與3和4

0和-2 VS 3和4

0和-1 VS 3和4

0和0對3和4

0和1比3和4

0和2與3和4

1和-2 VS 3和4

1和-1 VS 3和4

1和0對3和4

1和1比3和4

1和2與3和4

+0

範圍'[a,b]'和'[c,d]'?你爲什麼要打印這些數字(a,b,c,d)而不是'(i,j)'?我不確定我是否按照正確的問題來回答:| – amit

+0

你的代碼出了什麼問題?它是否編譯失敗(好吧,上面發佈的確切代碼不會編譯,因爲類名必須是單個標識符)?它拋出異常嗎?它是否產生了錯誤的答案?我們無法瞭解您的想法以瞭解需要解決的問題。 –

回答

0

看起來合理,例外的 '-a' 業務(並打印了錯誤的變量)

假設A/b始終爲正,嘗試

for (int i = (0-a); i <= a; i++) 
    for (int j = (0-b); j <= b; j++) { 
     System.out.println(i+" and "+j+" vs "+c+" and "+d+"\n"); 
1

我假設第一個缺少括號是複製&粘貼中的問題,但如果這是您的真實代碼,那麼您在那裏遇到了問題。

a = Math.abs(a); 
b = Math.abs(b); 

for (int i = -a; i <= a; i++) { 
    for (int j = -b; j <= b; j++) { 
     System.out.println(i+" and "+j+" vs "+c+" and "+d+"\n"); 
    } 
} 

兩件事。首先你應該打印ij,第二你也應該考慮負值。您for的將失敗,因爲如果-aa = -1導致

for (int i = 1; i <= -1; i++) 

這種情況不會得到滿足,迭代不會發生。通過執行Math.abs,您可以獲得輸入的絕對值,並且可以執行從負值到正值的迭代。如果ab均爲正值,則abs方法將返回相同的值(將ab分配給它們已具有的相同值)。

不管怎麼處理cd還有待觀察。你想要的輸出說你離開他們,所以我現在不會碰他們。

+0

這非常有幫助。善於思考使輸入絕對值。非常感謝您的幫助。 – Ted

+0

@Ted不客氣。此外,請記住,如果點擊問題評分下方的綠色勾號表示真實有用,您可以接受答案。 – Gamb