2016-12-27 24 views
1

編程問題是對Java集合對象的算術運算

給定兩個數字表示兩個列表,寫一個返回和列表的函數。總和列表是添加兩個輸入數字的列表表示。

輸入: 第一列表:5-> 6-> 3 //表示數563 第二列表:1-> 4-> 2 //表示數142 輸出 結果的列表:7-> 0-> 5 //表示數字705

我已經嘗試過使用集合,但在添加集合對象期間卡住了。有什麼建議嗎?

import java.util.*; 
import java.io.*; 
public class Listdemo{ 
public static void main(String[] args){ 
    LinkedList<Integer> l1 = new LinkedList<Integer>(); 
    LinkedList<Integer> l2 = new LinkedList<Integer>(); 
    Scanner i1 = new Scanner(System.in); 
    System.out.println("Enter first list values:"); 
    while(i1.hasNextInt()){ 
     int i = i1.nextInt(); 
     l1.add(i); 
     } 
    Scanner i2 = new Scanner(System.in); 
    System.out.println("Enter second list values:"); 
    while(i2.hasNextInt()){ 
     int i = i2.nextInt(); 
     l2.add(i); 
     } 
    Iterator r1 = l1.iterator(); 
    Iterator r2 = l2.iterator(); 
    while(r1.hasNext() && r2.hasNext()){ 
     int j= r1.next() + r2.next(); 
     System.out.println(j); 
     } 
+0

這兩個數字中的位數是否相同? 「 – GurV

+0

」在添加收集對象期間卡住了什麼?你能簡單解釋一下你上面發佈的代碼是做什麼的嗎? – YoungSpice

+0

@YoungSpice上面的代碼所做的是一個正常的添加,其中列表的節點包含一個單獨的數字。例如:假設數字是201,節點1包含2,節點2包含0並且節點3包含1在列表中。 –

回答

1

你想要做的是「任意精度算術」。實質上,您的列表中的每個元素都對應於基數10中的一個位置。假設兩個列表的長度相同(具有相同的數字位數),則需要添加相應的數字,如果存在「carry」(9 + 5具有4的進位),則可以將其添加到下一個元素在列表中。

+0

這就是我想要做的,但我不知道如何檢索集合對象作爲原語和應用加法操作可以幫助我的代碼。 –

+0

據我所知,您不能將Java集合對象視爲基元。你可能想要做的是定義一個方法'add',它將兩個鏈表作爲參數。然後在該方法內手動執行添加。 –

+0

謝謝@Jack Billings能不能爲我輸入那段代碼呢因爲我是剛入門的java基礎知識 –