[英]Can't locate Java substring in for loop
我正在嘗試制作一個計算器應用程序,並且輸入了用於輸入最終方程式的字符串。 我要解決的“ 983 + 388 + 12”是首先確定操作員在哪里。 在此之后,我前后循環嘗試查找2個數字,然后將它們相加。 因此,我將找到加號,然后是983和388並將其添加。 我在匹配與添加符號相關的上一個/下一個數字時遇到麻煩。
public static void main(String[] args)
{
int plus=0;
String string="983+388+12";
//locating Plus symbol
for(int i=0;i<string.length();i++)
{
if(string.charAt(i)=='+')
{
plus=i;
}
}
//locating next number (should be 388)
for(int i=plus+1;i<string.length();i++)
{
if(string.charAt(i)=='+' || string.charAt(i)=='-')
{
String nextNumber=string.substring(plus+1, i-1);
System.out.println(nextNumber);
break;
}
}
我沒有得到任何返回值作為nextNumber的值
在第一個循環中找到+
時,就不會停止掃描字符串。 這導致plus
標記的最后位置+
,這是388后和12前的第二循環永遠不會找到一個+
或-
最后經過+
,所以永遠印什么。 找到第一個+
, break
循環。
另外,為避免只找到38
,請更正您的substring
調用,其中結尾索引為Exclusive 。
String nextNumber = string.substring(plus + 1, i);
嘗試僅使用一個循環,請參見下文(工作示例)。 我沒有將任何東西分解成較小的方法。
public static void main(String[] args) {
String string="983+388+12";
String numberStr="0";
int lastSignPos = 0;
int signPos=0;
char sign = '+';
int total=0;
//locating Plus symbol
for(int i=0; i < string.length(); i++) {
if(string.charAt(i)=='+' || string.charAt(i)=='-') {
lastSignPos = signPos;
signPos = i;
numberStr = "0";
if (lastSignPos == 0){
// first number in series
numberStr = string.substring(0,signPos);
} else {
numberStr = string.substring(lastSignPos + 1, signPos);
}
sign = '+';
if (string.charAt(lastSignPos)=='-'){
sign = '-';
}
total += Integer.parseInt(sign + numberStr);
}
}
// take care last number
numberStr = string.substring(signPos+1);
sign = '+';
if (string.charAt(signPos)=='-'){
sign = '-';
}
total += Integer.parseInt(sign + numberStr);
System.out.println(total);
}
您可以嘗試這樣的事情:
String example = "123+456+678";
String delim = "+";
StringTokenizer st = new StringTokenizer(example,delim);
while (st.hasMoreElements()) {
System.out.println("StringTokenizer Output: " + st.nextElement());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.