8、harAt(i)-48;
if(i!=numLen-1 && num!=0)
{
result+=hanArr[num]+unitArr[numLen-2- i];
}
else
{
result+=hanArr[num];
}
}
return result;
}
public static void main(String口 args)
{
Num2Rmb nr = new Num2Rmb();
System.out.println(nr.toHanStr("633779433451"));
}
}
2,字符串截取,中文不會被截取半個。
例如:我和你
9、ABC 截取4位:我和你A
我和你ABC截取2位:我和
參考答案:
publicstatic String subString(String str, int len) {
if (str ==
null &&"" ,equals(str)) {
returnnull
// 將字符串中的char數(shù)組轉(zhuǎn)換成指定編碼方式的 byte數(shù)組的函數(shù)
byte 口 strBytes = null ;
try { strBytes = str.getBytes( "GBK");
} catch (UnsupportedEncodingException e) { e.printStack
10、Trace();
}
// 得到字符串的長度,判斷截取字符串的長度是否在判斷的范圍內(nèi),否則返
回原串
int strLen = strBytes. length ;
if (len >= strLen || len < 1) { return str;
}
System. out .println( "strBytes.length=" + strBytes. length );
System. out .println( "len=" + len);
int count = 0;
for ( int i = 0; i < len; i++) {
// 將每個字節(jié)數(shù)組轉(zhuǎn)換
11、為整型數(shù),以為后面根據(jù)值的正負來判斷是
否為漢字
int value = strBytes[i];
System. out .print(value + "," ); // 我ABC你-50,-
46,65,66,67,-60,-29
// 對于第一種情況:
// 注,一個函數(shù)轉(zhuǎn)換成整型數(shù)就為兩個負整數(shù) ,上面的"我ABC你;
// 轉(zhuǎn)換成整型數(shù)就為 -50,-46,65,66,67,-60,-29 ,但是 len=6 :
所以截取下來的就是 -50,-46,65,66,67,-60,count 就為3
// 如果是漢字(負),則統(tǒng)計截取字符串中的漢字所占字節(jié)數(shù)
if (v
12、alue < 0) {
count++;
}
System. out .println( "zh count=" + count);
}
// 依據(jù)判斷給定的字符串是否含有漢字,利用 String 類的substring。 方
法來截取不同的長度
// 根據(jù)所統(tǒng)計的字節(jié)數(shù),判斷截取到字符是否為半個漢字,奇數(shù)為半個漢字
if (count % 2 != 0) {
// 如果在截取長度為1時,則將該漢字取出,
// 其他情況則不截取這里的截取長度則按字符長度截取(截取字節(jié)
長度數(shù)-截取漢字字節(jié)數(shù)/2-截取到的半個漢字的字節(jié)數(shù))
len = (len == 1) ? len
13、 : len - count / 2 - 1; //
len=6-3/2-1=4 我 ABC
// System.out.println(" 處理后的 len="+len);
} else {
// 截取字符長度為字節(jié)長度-漢字所占字節(jié)長度/2 (漢字占兩個字節(jié))
len = len - (count / 2);
}
return str.substring(0, len);
}
3.個人所得稅的計算,不同階段的工資給出不同階段的個人所得稅的交付。輸入工資 salary計算出應付的稅款tax。
計算公式:tax = n * ( salary - 850 ) n為稅率
稅率
14、表為:
工資 稅率
salary<850 0%
850 850 && salary < 3000) { salary = 0.05 * (salary - 850d);
} elseif (salary > 3000 &&
15、salary < 5000) {
salary = 0.1 * (salary - 850d);
} elseif (salary > 5000 && salary < 8000) { salary = 0.15 * (salary - 850d);
} elseif (salary > 8000 && salary < 10000) { salary = 0.2 * (salary - 850d);
} elseif (salary > 10000) { salary = 0.22 * (salary - 850d);
}
return salary;
}
問答題
1 .使
16、用系統(tǒng)設計的思想實現(xiàn)程序?qū)Σ煌Z言,不同時區(qū)的支持
參考:對不同語言,不同時區(qū)的支持 ,涉及國際化和本地化
建筑
國際化是指在設計軟件時,將軟件與特定語言及地區(qū)脫鉤的過程。當軟件被移植到 不同的語言地區(qū)時,軟件本身不用做內(nèi)部工程上的改變或修正。本地化則是指當移 植軟件時,加上與特定區(qū)域設置有關的資訊和翻譯文件的過程。
通常作法是將文本和其他環(huán)境相關的資源與程序代碼相分離。這樣在理想的情況下, 應對變化的環(huán)境時無需修改代碼,只要修改資源,從而顯著簡化了工作。
2 .什么是快速迭代失效?如何解決?
緡考
Vector 等 Collection 類,都有類似的說明:由 Vector
17、 的 iterator 和 listiterator 方
法所返回的迭代器是快速失敗的:如果在迭代器創(chuàng)建后的任意時間從結構上修改了向
量(通過迭代器自身的remove或add方法之外的任何其他方式),則迭代器將拋出
ConcurrentModificationException 。因此,面對并發(fā)的修改,迭代器很快就完全失敗, 而不是冒著在將來不確定的時間任意發(fā)生不確定行為的風險。
解決辦法:不適用 Collection自身的remove。方法,而使用Iterator本身的方法 remove。來刪除對象,因為這樣子可以刪掉原對象,同時當前迭代對象的索引也得到 同步。
3 .下面是一段對
18、數(shù)據(jù)庫異常處理的代碼:
publicclass DBUtil {
privatestaticfinalint CAN_CONNECT = 5001;
privatestaticfinalint SQL_ERROR = 5002;
publicvoid exceptionHandle( int exception){
switch (exception){
case CAN_CONNECT : {
//do something...
System. out .println( "The DB cant be
connected....
);
case SQL_ERROR
19、 : {
//do something...
System. out .println( "The SQL is Error..." );
}
default
//do something...
System. out .println( "Other reasons..." );
}
}
}
若需要添加其他錯誤碼,則只需添加 case分支即可。但是在異常非常多時這種方
式處理會造成代碼的冗余。而且經(jīng)常改動已經(jīng)完成的代碼還很可能會帶來其他代碼 塊的錯誤,帶來未知的風險。請使用設計模式改造該代碼。
緡考:
可用策略模式改造。
知識點:多態(tài)、反射
二枚舉類:
pac
20、kage strategy;
publicenum ErrorTypeEnum {
CANNOT_CONNECT(5001, "The DB cant be connected...." ),
);
SQL_ERROR(5002, "The SQL is Error...
/**
狀態(tài)值
*/
privateint
value ;
/**
* 類型描述
*/
private String description ;
private ErrorTypeEnum( int value, String description) { this . value = va
21、lue;
this . description = description;
}
publicint value() { return value ;
}
public String description。{ return description ;
}
publicstatic ErrorTypeEnum valueOf( | int value) {
for (ErrorTypeEnum type : ErrorTypeEnum. values ()) {
if (type.value() == value) {
return type;
}
} returnnu
22、ll
}
二:Strategy 接 口 :
package strategy;
publicinterface Strategy {
// 可添加通用方法
String outline。;
}
三: Cannot_ConnectStrategy 類:
package strategy;
publicclass Cannot_ConnectStrategy implements Strategy {
@Override
public String outline。{
return "The DB cant be connected....
四:Sql_ErrorStr
23、ategy 類:
package strategy;
implements Strategy {
publicclass Sql_ErrorStrategy
@Override
public String outline。{
return "The SQL is Error...
}
五:Context 類:
package strategy;
publicclass Context {
private Strategy strategy ;
public String contextOutline( int exception) {
strategy =
Stra
24、tegyFactory.
getInstance ().creator(exception);
建筑
if ( strategy != null ) { return strategy .outline。;
} else {
return "Other reasons..." }
}
public Strategy getStrategy() { return strategy ;
}
publicvoid setStrategy(Strategy strategy) { this . strategy = strategy;
}
六:Client類,測試
pa
25、ckage strategy;
publicclass Client {
publicstaticvoid exceptionHandle( int exception){
Context context = new Context。;
String outline = context.contextOutline(exception);
System. out .println(outline);
}
建筑
publicstaticvoid
main(String口 args) {
exceptionHandle
(5001);