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);
}
}
如果大家有什麼不同的意見或者更好的方法的話,歡迎你們提出來,鄙人虛心請教和接受!!!