作者 主題: 關於撰寫JAVA兩字串轉字元相加之問題??  (閱讀 13077 次)

0 會員 與 1 訪客 正在閱讀本文。

su3cl35jo

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
最近再撰寫JAVA時,
程式需要用到字串相加,
當然沒想太多,將他轉成字元之後相加。
開始列印出來結果,並沒有讓我太驚訝。
但是當另1字串的數值改變時,
他的結果卻讓我苦思了。
EX:
strOut:32SA0
strWd:12345
相加後
strOut2:dd?dv

問題來了,那個?也意味代表的已經溢位了
如果strOut2今天拿去別的程式用,
然後再拉回來與strWd相減的話。
它裡面的值勢必變的不相同。
可是我只會把她轉成ASCII相加

代碼: [選擇]

for(int i=0;i<strOut.length();i++){
         strOut2=strOut2+(char)(strOut.charAt(i)+strWd.charAt(i));


有什麼方法把strWd轉成轉成是整數的相加呢?
EX:
strOut:32SA0
strWd:12345
相加後
strOut2:44VE5
我所想要的則是如上的結果,要怎麼改才OK呢?
PS:strWd必須是5個數值

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
關於撰寫JAVA兩字串轉字元相加之問題??
« 回覆 #1 於: 2007-03-18 21:24 »
參考一下,可能不是答案

剛剛把ascii表拿出來對照一下發現

3=ascii(16進位的33)
1=ascii(16進位的31)
2=ascii(16進位的32)
d=ascii(16進位的64)
S=ascii(16進位的83)

xxx:32SA0
xxx:12345

3+1=33+31=64
2+2=32+32=64
S+3=83+33=116(換算成10進位滿大的-->超過256了吧)

可能不是這樣的,您可以用比較小的值去看看是不是這樣
比如
1+2=c(16進位的63)
0+5=e(16進位的65)
...
...
如果是的話先轉成10進位後再相加的話應該比較容易一些

參考參考
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
關於撰寫JAVA兩字串轉字元相加之問題??
« 回覆 #2 於: 2007-03-18 21:37 »
寫程式一定要搞清楚"數"跟"字"的分別

char c='1'

這時的1是個"字"
如果轉成"數"的話其值為49不是1

相反的
int i=65

這時的65是個"數"
如果轉成"字"的話其代表的是'A'這個字,不是'65'這個字

雖然有些語言可以讓'字'相加
但所謂加起來應該是"將兩個字合併"不是將"兩個字的值加起來"(雖然可以這樣做,但...玩加密才比較常用到)

參考一下喔 :D
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

su3cl35jo

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
關於撰寫JAVA兩字串轉字元相加之問題??
« 回覆 #3 於: 2007-03-18 21:46 »
該怎麼說呢?
strWd我本來就是要拿來當密碼的!!~
但是假如轉換成整數,會遇到的1個問題
是他似乎沒辦法容下超過4個字所組成的字串,
你可能會想,密碼用int宣告
然後把未加密字串轉換成int
哈,答案還是相同的。
因為它還是剛好容不下
整個就是個尷尬阿
該說這個好玩,還是說煩呢?
專題又快比賽了,
簡直是跟他賽跑阿@@

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
關於撰寫JAVA兩字串轉字元相加之問題??
« 回覆 #4 於: 2007-03-19 01:56 »
xxx:32SA0
xxx:12345

32SA0及12345是怎麼宣告的(一維陣列,或是二維陣列下的二個字串)

您可以一個字元一個字元的方式處理(就是把字串拆開)

拆開成一個字一個字以後,再去逐字做運算

str[y]
  • ...好好運用y跟x之間的關係,應該不會有塞不進去的問題
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼

stlee

  • 鑽研的研究生
  • *****
  • 文章數: 817
    • 檢視個人資料
關於撰寫JAVA兩字串轉字元相加之問題??
« 回覆 #5 於: 2007-03-19 02:01 »
我有貼過一個程式在本版(c語言的),可以算出不限位數的四則運算,而且我很久都沒用過轉型了
都是用字串在做處理(簡化)比較多,可以參考看看,希望對您有所幫助,加油

謎之音:應該有"字串轉數字"的函數可以逐字轉換後加起來
謎之音2:一個字元也可以是一個字串(最短的字串就是一個字)
謎之音3:把strOut的0~9與a~z,A~Z分開做
程式是人寫的,別讓工具的限制成為您想像力的極限
~程式中最重要的部份應該是註解而不是程式碼,這是因為解讀註解一定比解讀程式碼簡單
~程式寫好後約一個月就會忘的差不多了,所以花點時間把註解寫好至少能讓自己(或別人)看的懂當初在寫什麼