[英]Why java substring not working in this case?
我編寫了一個代碼,其中 java 代碼選擇不同變量中小數點前的數字和不同變量中小數點后的數字。 例如在下面的代碼中,我們有 23.256 現在我編寫的代碼將 select 23 在firstDigit
變量和 256 在lastDigit
變量。 現在問題來了,當小數點后沒有數字時,例如如果我們有 23,這將崩潰。
我寫的是(這工作)
totalAmount = 23.256;
String totalAmountString = new BigDecimal(String.valueOf(totalAmount )).toString();
String firstDigit= totalAmountString .substring( 0,totalAmountString .indexOf('.'));
String lastDigit= totalAmountString .substring( totalAmountString .indexOf('.'), totalAmountString .length());
它不起作用
totalAmount = 23;
String totalAmountString = new BigDecimal(String.valueOf(totalAmount )).toString();
String firstDigit= totalAmountString .substring( 0,totalAmountString .indexOf('.'));
String lastDigit= totalAmountString .substring( totalAmountString .indexOf('.'), totalAmountString .length());
totalAmount 將由用戶提供,所以我們不知道小數點后是否有數字。 當用戶在小數點后沒有任何數字輸入 totalAmount 時出現問題,代碼崩潰。
任何幫助將不勝感激:)
您需要首先檢查索引是否為-1
,這意味着沒有找到小數點。
int idx = totalAmountString .indexOf('.');
String firstDigit= idx != -1 ? totalAmountString .substring( 0, idx): totalAmountString;
String lastDigit= idx != -1 ? totalAmountString .substring(idx, getAcreIntoString.length()): "";
以下代碼對我有用。
double totalAmount = 23.256;
String totalAmountInString = String.valueOf(totalAmount).toString();
//Checks wether the totalAmount has value after decimal
if (totalAmount % 1 != 0)
{
//totalAmount has value after decimal
String firstDigit = totalAmountInString.substring( 0,totalAmountInString .indexOf('.'));
String lastDigit= totalAmountInString.substring( totalAmountInString.indexOf('.'), totalAmountInString.length());
System.out.println("Before Decimal : " + firstDigit);
System.out.println("After Decimal : " + lastDigit);
}
else
{
//totalAmount has no value after decimal
System.out.println(totalAmountInString + " Has no decimal");
}
祝你好運!
您可以使用字符串 class 的拆分方法
String totAmountStr = new BigDecimal(String.valueOf(23.256)).toString();
String[] split = totAmountStr.split("\\.");
String firstDigit= null;
String lastDigit= null;;
if (split.length > 1) {
firstDigit = split[0];
lastDigit = split[1];
} else {
firstDigit = split[0];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.