Discussion:
[問題] 自訂ADT運算符號
(时间太久无法回复)
一直當朋友也不錯
2006-11-10 06:35:46 UTC
Permalink
我想請問一下各位大大一個問題

就是java裡面可以不可以自訂"加號"

例如說我現在有兩個數字要相加

正常來說這兩個數字會以10進位相加

但是我想自訂一個以8進位相"加號"

java可以這樣做嗎??

還是說只能用method做

java的API有提供以八進位相加的method嗎??

先謝謝大家嚕!!


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.241.163
※ 編輯: capslook1218 來自: 59.117.241.163 (11/10 22:35)
愚人
2006-11-10 07:03:32 UTC
Permalink
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《capslook1218 (一直當朋友也不錯)》之銘言:
: : 我想請問一下各位大大一個問題
: : 就是java裡面可以不可以自訂"加號"
: 理論上不行
: : 例如說我現在有兩個數字要相加
: : 正常來說這兩個數字會以10進位相加
: : 但是我想自訂一個以8進位相"加號"
: : java可以這樣做嗎??
: : 還是說只能用method做
: : java的API有提供以八進位相加的method嗎??
: : 先謝謝大家嚕!!
: 找 API 的時間可能遠多於自己寫一個 method 的時間

呃,二位用的語境不太相同

PsMonkey大概想指出java沒有[提供使用者]

cpp那樣operator overloading的功能


而"一直當朋友也不錯"(好人!?)

指的ADT的"加號"

其實對ADT來說,只是規範這個abstract data type

所允許的一種加法運算的功能

(請注意,ADT描述的是功能,而非如何實作)


*請用method的方式為你的ADT加上這個功能*

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.94.161
愚人
2006-11-10 07:07:26 UTC
Permalink
※ 引述《capslook1218 (一直當朋友也不錯)》之銘言:
: java的API有提供以八進位相加的method嗎??
: 先謝謝大家嚕!!

不管你是幾進位,數字永遠是數字

n進位只是一種表現形式

你只要在同一個進位(m)

即可很方便的做+ - * /

對大部分的人來說,

比較容易接受10進位罷了

15 + 15 = 30

0x0f + 0x0f = 0x1e = 30

會是一樣的

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.94.161
好累想睡覺
2006-11-10 07:13:57 UTC
Permalink
※ 引述《capslook1218 (一直當朋友也不錯)》之銘言:
: 我想請問一下各位大大一個問題
: 就是java裡面可以不可以自訂"加號"
: 例如說我現在有兩個數字要相加
: 正常來說這兩個數字會以10進位相加
: 但是我想自訂一個以8進位相"加號"
: java可以這樣做嗎??
: 還是說只能用method做
: java的API有提供以八進位相加的method嗎??
: 先謝謝大家嚕!!
自訂加號方面沒有研究...@@...實在無從下手....

不過如果是八進位相加的 method 倒還是有辦法的
只是要透過String來轉換 感覺有點不直接...
希望有高手可以提供更好的方法 ^^

我用的物件是 java.lang.Integer 範例程式如下 :

public class test
{
public static void main(String [] args)
{
//假設今天要讓兩個數字相加
int num1 = 20 , num2 = 13 ;
//宣告一個字串來接收八進位相加的結果
String ans = Integer.toOctalString(num1+num2) ;

System.out.println("八進位加法的答案 : " + ans) ;
//純粹宣告一個 integer 來接收八進位字串轉為十進位的數字
int numResult = Integer.parseInt(ans,8) ;

System.out.println("轉為十進位的結果 : " + numResult) ;
}
}

//20 + 13 = 33 但是八進位會 show 出 41 (因為是八進位 == ==)

ps. 不過感覺跟原po問的有點出入 畢竟他要的是相加的 method

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.198.132.45
一直當朋友也不錯
2006-11-10 07:15:38 UTC
Permalink
※ 引述《qrtt1 (愚人)》之銘言:
: ※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: : 理論上不行
: : 找 API 的時間可能遠多於自己寫一個 method 的時間
: 呃,二位用的語境不太相同
: PsMonkey大概想指出java沒有[提供使用者]
: cpp那樣operator overloading的功能
: 而"一直當朋友也不錯"(好人!?)
: 指的ADT的"加號"
: 其實對ADT來說,只是規範這個abstract data type
: 所允許的一種加法運算的功能
: (請注意,ADT描述的是功能,而非如何實作)
: *請用method的方式為你的ADT加上這個功能*

我的意思是說能不能自訂"+ - * /"這樣的符號

然後如果不能的話

是不是就要用ADT做(也可以不用)

之後我打著打著又想到說API說不定會有這個東西

我跑去查...沒找到(可能我功力不夠吧~_~我是找math裡面的東西可是好像沒看到~_~)

英文太爛了....

ps:一直當朋友也不錯.....這是我心中的痛別提了......不過我不敢自稱是好人

感謝兩位大大的講解

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.241.163
愚人
2006-11-10 07:45:20 UTC
Permalink
※ 引述《capslook1218 (一直當朋友也不錯)》之銘言:
: 我的意思是說能不能自訂"+ - * /"這樣的符號
: 然後如果不能的話
: 是不是就要用ADT做(也可以不用)
: 之後我打著打著又想到說API說不定會有這個東西
: 我跑去查...沒找到(可能我功力不夠吧~_~我是找math裡面的東西可是好像沒看到~_~)
: 英文太爛了....
: ps:一直當朋友也不錯.....這是我心中的痛別提了......不過我不敢自稱是好人
: 感謝兩位大大的講解

請認清,ADT是在描述一個東西

至於東西怎麼完成的並不重要

不必要拘泥為+ - * /的模式

到最後還不是bytecode

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.94.161
痞子軍團團長
2006-11-10 07:54:03 UTC
Permalink
※ 引述《capslook1218 (一直當朋友也不錯)》之銘言:
: ※ 引述《qrtt1 (愚人)》之銘言:
: : 呃,二位用的語境不太相同
: : PsMonkey大概想指出java沒有[提供使用者]
: : cpp那樣operator overloading的功能
: : 而"一直當朋友也不錯"(好人!?)
: : 指的ADT的"加號"
: : 其實對ADT來說,只是規範這個abstract data type
: : 所允許的一種加法運算的功能
: : (請注意,ADT描述的是功能,而非如何實作)
: : *請用method的方式為你的ADT加上這個功能*
: 我的意思是說能不能自訂"+ - * /"這樣的符號
: 然後如果不能的話
: 是不是就要用ADT做(也可以不用)

雖然說我資料結構沒學好
(偏偏現在還在帶資料結構助教課 XD)
不過這個 ADT 應該是資料結構的 ADT 吧?


根據 Fundamentals of Data Structures in C 這本書 p.15 提供的定義

An abstract data type (ADT) is a data type that is organized
in such a way that the specification of the objects and the
specification of the operation on the objects is separated
from the representation of the objects and the implementation
of the operations.

下面還寫:
Some programming languages provide explicit mechanisms to
support the distinction between specification and implementation.
For example, Ada has a concept called a package, and C++ has a
concept called a class.

C++ 的 class 應該跟 Java 的 class 完全等價

所以,當 qrtt1(大神)回你那篇之後
你這篇仍然說「是不是就要用 ADT 作」
這... 似乎有點囧....

: 之後我打著打著又想到說API說不定會有這個東西
: 我跑去查...沒找到(可能我功力不夠吧~_~我是找math裡面的東西可是好像沒看到~_~)
: 英文太爛了....
: ps:一直當朋友也不錯.....這是我心中的痛別提了......不過我不敢自稱是好人
: 感謝兩位大大的講解

--



戰略高手 -- CompScience 組組長 PsMonkey

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.192.29
一直當朋友也不錯
2006-11-10 08:08:23 UTC
Permalink
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《capslook1218 (一直當朋友也不錯)》之銘言:
: : 我的意思是說能不能自訂"+ - * /"這樣的符號
: : 然後如果不能的話
: : 是不是就要用ADT做(也可以不用)
: 雖然說我資料結構沒學好
: (偏偏現在還在帶資料結構助教課 XD)
: 不過這個 ADT 應該是資料結構的 ADT 吧?
: 根據 Fundamentals of Data Structures in C 這本書 p.15 提供的定義
: An abstract data type (ADT) is a data type that is organized
: in such a way that the specification of the objects and the
: specification of the operation on the objects is separated
: from the representation of the objects and the implementation
: of the operations.
: 下面還寫:
: Some programming languages provide explicit mechanisms to
: support the distinction between specification and implementation.
: For example, Ada has a concept called a package, and C++ has a
: concept called a class.
: C++ 的 class 應該跟 Java 的 class 完全等價
: 所以,當 qrtt1(大神)回你那篇之後
: 你這篇仍然說「是不是就要用 ADT 作」
: 這... 似乎有點囧....
: : 之後我打著打著又想到說API說不定會有這個東西
: : 我跑去查...沒找到(可能我功力不夠吧~_~我是找math裡面的東西可是好像沒看到~_~)
: : 英文太爛了....
: : ps:一直當朋友也不錯.....這是我心中的痛別提了......不過我不敢自稱是好人
: : 感謝兩位大大的講解

呵呵....好強

老實說我對ADT的認知

只知道他是一個要去實作的method

目前我正在修資結......囧

不好意思

所以可能會很好笑的問題跑出來

不好意思....^^

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.241.163
推 PsMonkey:我只是把書上的字打下來而已,這樣也能虎爛到人?  11/11 00:07
继续阅读narkive:
Loading...