2014-03-12 26 views
0

我的問題似乎很簡單,但我試過尋找一個特定的答案,並沒有找到。我發現了類似於我一直在尋找的答案,但他們只能設法讓我更加困惑:Java:添加兩個數字字符陣列

我想要做的就是添加兩個字符數組並打印結果數組。該項目處理二進制數,但稍後我會處理基數2的算術,所以假設它們是基數爲10的數字。

char[] array = {'1', '0', '0', '1'}; 
char[] array2 = {'1', '1', '0', '0'}; 
char[] sum = new char[4]; 
for(i=0; i < 4; i++){ 
    sum[i] = char(array[i] + array2[i]); 
    System.out.print(sum[i] + " "); 
    } 

我的回答是「b''b」當我運行它,所以它似乎有些ASCII轉換正在發生的事情我猜?我的預期答案應該是「2101」,我意識到問題出在我的演員身上,我只是不知道如何繼續。 Sum必須保留爲字符數組作爲程序參數的一部分。

編輯:我知道使用一個int數組總和將解決這個問題。正如我在我原來的文章中所說的,sum必須是一個字符數組作爲這個項目的參數的一部分。

+1

爲什麼不用'int []'來代替? –

+1

字符不是數字,你爲什麼期待'1'+'1'='2'? –

+0

sum [i] = char(array1 [i])+ char(array2 [i]); – sp1rs

回答

0

試試這個。有用。 2 1 0 1生成成功(總時間:0秒)從char[]陣列int[]陣列

public static void main(String[] args) { 
     char[] array = {'1', '0', '0', '1'}; 
     char[] array2 = {'1', '1', '0', '0'}; 
     int[] sum = new int[4]; 
     for (int i = 0; i < 4; i++) { 
      sum[i] = Integer.parseInt(array[i] + "") + Integer.parseInt(array2[i] + ""); 
      System.out.print(sum[i] + " "); 
     } 
    } 

輸出

運行改變這個總和變量

0

試鑄字符轉換爲int。像

int i = Integer.parseInt(array[0] + ""); 

同樣可以繼續休息,然後執行加法

0

如果你想添加1 + 1並獲得2則不要使用字符數組。使用int數組,或使用

int i = Integer.parseInt(array[0] + "");

0

的問題是你將它添加鑄成int。 基本上,你需要做的是總結第一個字符,數組[i] +(array2 [i] - '0')。 這是因爲使用第一個字符時,您會得到正確的ASCII-0索引值,但第二個字符應該是來自ASCII 0索引的多個步驟,因此「 - '0'」將給出你只是差異。

1

您可以使用Character.toString()char轉換爲String。其次,使用Integer.parseInt()char轉換爲int。然後添加這些整數。最後,使用Character.forDigit(digit, 10)int(數字)轉換爲char

char[] array = { '1', '0', '0', '1' }; 
char[] array2 = { '1', '1', '0', '0' }; 
char[] sum = new char[4]; 

for (int i = 0; i < 4; i++) { 
    sum[i] = Character.forDigit(
      Integer.parseInt(Character.toString(array[i])) + Integer.parseInt(Character.toString(array2[i])), 
      10); 
    System.out.println(sum[i]); 
} 

輸出:

2 
1 
0 
1 

當然你也可以避開這一點,如果你使用一個整數陣列

int[] array = {1, 0, 0, 1}; 
0

使用int數組,而不是字符數組,將結果存儲到你的sum char數組中。但是用int數組來存儲結果。這將幫助你處理數字操作

1

你假設ASCII數學運行正確。 char變量被隱藏在引擎蓋下的變量。添加char變量基本上取ASCII十進制值,然後添加這些值,然後給出ASCII字符表示。這有點過分簡化了,但我想告訴你爲什麼會發生這種情況。

例如,如果'1'是ASCII十進制49,'1' + '1' = 49 + 49 = 98 98在ASCII是'b'

我建議只是開關陣列的類型,您使用的是int

int[] array = {1, 0, 0, 1}; 
int[] array2 = {1, 1, 0, 0}; 
int[] sum = new int[4]; 
for(int i = 0; i < 4; i++) { 
    sum[i] = array[i] + array2[i]; 
    System.out.print(sum[i] + " "); 
} 
0

我覺得這聽起來像是在採訪中問了一個問題。問題的意圖是從兩個數組中添加Integer個字符,並將結果輸出爲字符數組。

char[] a = { '4', '5', '6' }; 
    char[] b = { '7', '8', '9' }; 
    Integer c = Integer.parseInt(String.valueOf(a)) + Integer.parseInt(String.valueOf(b)); //456 + 789 = 1245 
    final char[] d = c.toString().toCharArray(); // d = {'1',2,'4','5'} 

該解決方案處理所有的情況,總和可以結束進位。