2016-08-04 51 views
0

我必須創建一個程序,它添加兩個整數並垂直打印總和。
例如,我有。使用數組添加數字並垂直打印總和

a=323, b=322. 

輸出應該是:

6 
4 
5 

我已經創造了在整數均達到兩位數字的代碼,但我希望它至少三位數工作。

下面是我能想到的最好的。
這可能是完全錯誤的,但我面臨的唯一問題是數組的聲明。
它表示該數組可能未被初始化。
如果我將它設置爲null,那麼它以後也不會給它賦值。

我知道也許我在這裏犯了一個很大的錯誤,但如果有人能幫助我,我會非常感激。
請注意,我不能爲此代碼使用任何其他函數。
希望我很清楚。

public class Vert 
{ 
    public static void main(String args[]) 
    { 
     int n,i=0,j,a=323,b=322; 
     int s[]; 
     n=a+b; 
     while(n>9) 
     { 
      s[i]=n%10; 
      i++; 
      s[i]=n/10; 
      if(s[i]>9) 
      { 
       n=s[i]; 
      } 
     } 
     j=i; 
     for(j=i;j>=0;j--) 
     { 
      System.out.println(+s[j]); 
     } 
    } 
} 
+0

'+ S [J]'這看起來可能是一個問題...什麼**是**錯誤,但? –

+1

作爲一個方面說明,考慮一個例如「789」和「456」的情況:結果應該是什麼? –

+0

@ cricket_007錯誤是「S可能未初始化」,如果將「null」賦值給s [],那麼稍後將不會爲其分配任何其他值。我想知道如何初始化該數組。 –

回答

2

字符串轉換看起來像是作弊,所以這裏是一個Stack

int a = 323, b = 322; 

java.util.Stack<Integer> stack = new java.util.Stack<>(); 

int n = a + b; 
while (n > 0) { 
    stack.push(n % 10); 
    n = n/10; 
} 

while (!stack.isEmpty()) 
    System.out.println(stack.pop()); 

如果需要一個數組,你需要兩個越過總和

int a = 323, b = 322; 

// Get the size of the array 
int n = a + b; 
int size = 0; 
while (n > 0) { 
    size++; 
    n = n/10; 
} 

// Build the output 
int s[] = new int[size]; 
n = a + b; 
for (int i = size - 1; n > 0; i--) { 
    s[i] = n % 10; 
    n = n/10; 
} 

// Print 
for (int x : s) { 
    System.out.println(x); 
} 
+0

非常感謝您,但是您能否解釋您用於打印的for循環,因爲我不熟悉該格式。謝謝 –

+0

有沒有辦法使用「simple」for循環而不是使用「:」運算符來打印輸出。謝謝 –

+0

有,但它是一個增強的循環,我相信你的能力,搜索internetz和學習差異 –

1

初始化數組,你需要指定數組的大小爲下一:

int s[] = new int[mySize]; 

如果你不知道你的數組的大小,你應該考慮使用ListInteger,而不是爲下一個:

List<Integer> s = new ArrayList<Integer>(); 

這裏是如何能夠做到:

// Convert the sum into a String 
String result = String.valueOf(a + b); 
for (int i=0; i <result.length();i++) { 
    // Print one character corresponding to a digit here per line 
    System.out.println(result.charAt(i)); 
} 
+0

你如何確定'mySize'? –

+0

@ cricket_007坦率地說,我並沒有真正明白OP的目標,我只是試着回答他的第一個問題 –

+1

如果這是一項任務,我不確定他的老師是否希望在這裏看到一個List。如果他不想在運行時事先對位數進行硬編碼或計算位數,他應該放棄數組,並在數字出現時將其打印出來(如使用局部變量)... – OliPro007

1

我會做這樣的:

int a = 322; 
int b = 322; 
int sum = a + b; 
String s = Integer.toString(sum); 
for(int i = 0; i < s.length(); i++) { 
    System.out.println(s.charAt(i)); 
} 

但像需要一個數組您的問題看起來。

的步驟是一樣的我的解決方案:

  1. 使用int值
  2. 薩姆整型值(操作)
  3. 在一個陣列/串
  4. 輸出陣列轉換的int值/字符串
相關問題