Java程序設計(一)

java 編程中 關於字符串的截取問題 

請看例題 

編寫一個公共(public)類,類名爲AccountUtil,該類屬於account包,類中包含一個公用靜態方法toSeparateNumber,該方法以一個十進制字符串爲參數,返回用逗號隔開的數字字符串,分隔從右邊開始,每三個數字用一個逗號隔開。例如,若參數爲2367548,則返回2,367,548。若參數爲小數,則分隔從小數點開始,例如,若參數爲2367548.85,則返回2,367,548.85。
這是一個典型的例題  關於字符串的截取問題 那麼我們應該怎麼做這個題呢???

首先我們要明白 在java 語言中 字符串是一個對象 因此就會有相關的字符串的類以及類的方法 

那麼截取字符串得到子字符串的方法有沒有呢?當然,也是有的。比如這個函數(方法)substring(beginindex,endindex)

這個方法返回的是從beginindex這個位置到 endindex-1的位置這一段的字符串 並把其當成新的字符串賦給新的字符串 這就是這個方法的使用目的 

應該說 這個方法的使用是解決這道問題的關鍵之一 。

我們需要解決這個問題呢 ,還需要明白一點,題中要求對字符串的數據類型進行不同的分割,也就是說對於整數和小數,其字符串的分割是不同的。那麼我們需要怎麼去讓程序分別它是整數還是小數呢?這也需要利用到字符串方法中的indexOf(char ch) 這個方法 ,這個方法是用來返回指定的字符串的位置,可以用它來看是否含有小數點,這樣的話可以根據是否含有,來寫出不同的步驟。

還有就是怎麼截的問題,這個問題也是讓我苦惱了很久,我發現可以根據字符串的長度去取模以及去除以3 這樣的話 可以做到分段截取 根據去除的結果 來循環截取字符串 並加上逗號,就可以做到用逗號隔開了。

下面的程序的完整代碼。經過測試,可以正常運行!

package account;
import java.util.*;
public class account {
public static void main(String[] args)
{
account a=new account();
a.toSeparateNumber();

}
public static void toSeparateNumber()
{
Scanner in=new Scanner(System.in);
System.out.println("Please input your number ! ");
String s=in.next();
String s1="";
String s2="";
if(s.indexOf('.')==-1)
{
int count=s.length()/3;
int count1=s.length()%3;

for(int i=1;i<=count;i++)
{
if(count1==0&&i==count)
{
s2=s.substring(0,3)+s2;
break;
}
s1=","+s.substring(s.length()-3*i,s.length()-3*(i-1));
s2=s1+s2;

}
if(count1==1)
{
s2=s.substring(0,1)+s2;
}
else if(count1==2)
{
s2=s.substring(0,2)+s2;
}
}
else 
{
int count=s.indexOf('.')/3;
int count1=s.indexOf('.')%3;
for(int i=1;i<=count;i++)
{
if(count1==0&&i==count)
{
s2=s.substring(0,3)+s2;
break;
}
s1=","+s.substring(s.indexOf('.')-3*i,s.indexOf('.')-3*(i-1));
s2=s1+s2;

}
if(count1==1)
{
s2=s.substring(0,1)+s2;
}
else if(count1==2)
{
s2=s.substring(0,2)+s2;
}
s2=s2+s.substring(s.indexOf('.'),s.length());

}
System.out.println(s2);

}
}




如果大家有什麼不同的意見或者更好的方法的話,歡迎你們提出來,鄙人虛心請教和接受!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章