Java ArrayIndexOutOfBounds,同时测试字符是否为int
好了,伙计们,我正在尝试对Java有一个基本的了解,我想我会做一些比平常更复杂的事情。在这个方法中,我尝试首先检查第一个字符是否可以是int,如果可以,我想看看这个数字在输入中会走多远(因此,如果用户输入455+60,我想拔出455并停在+处) 出于某种原因,如果输入为500t,它将正常工作。但是如果索引在数字之后结束(比如输入值只有500),那么它就有问题了。我认为for循环由于某种原因一直在运行。有人能告诉我我在哪里搞砸了吗?我添加了一个if语句,看看是否可以阻止它,但没有用Java ArrayIndexOutOfBounds,同时测试字符是否为int,java,tostring,arrays,Java,Tostring,Arrays,好了,伙计们,我正在尝试对Java有一个基本的了解,我想我会做一些比平常更复杂的事情。在这个方法中,我尝试首先检查第一个字符是否可以是int,如果可以,我想看看这个数字在输入中会走多远(因此,如果用户输入455+60,我想拔出455并停在+处) 出于某种原因,如果输入为500t,它将正常工作。但是如果索引在数字之后结束(比如输入值只有500),那么它就有问题了。我认为for循环由于某种原因一直在运行。有人能告诉我我在哪里搞砸了吗?我添加了一个if语句,看看是否可以阻止它,但没有用 public
public void init(){
int chars = 0;
/*
* Input fancy intro here.
*/
clearArray();
String uInput = getInput();
rawInput=uInput.toCharArray();
cleanArray(rawInput);
try{Integer.parseInt(Character.toString(rawInput[0]));
boolean isNum = true;
for(int i=0;isNum==true;i++){
if(i != rawInput.length){
try{Integer.parseInt(Character.toString(rawInput[i]));}
catch (NumberFormatException s){
isNum = false;
chars = i;
System.out.println("The number has: "+chars+" characters.");
}
}
}
}
catch (NumberFormatException s){
System.out.println("What is this madness?");
}
}
在这里,您可以避免要求
rawInput[rawInput.length]
:
if(i != rawInput.length)
。。。但是你要继续进行下一次迭代
你有什么理由不能这么做:
for (int i = 0; i < rawInput.length && isNum; i++)
还请注意,正则表达式可能是解决此问题的更好方法
哦,如果您有一个空字符串,那么此时它将被视为一个数字…您可以通过在for循环中添加一个额外的检查来解决这个问题,以查看您是否在字符串的末尾。尝试:
for(int i=0;isNum==true && i<rawInput.length;i++){
for(inti=0;isNum==true&&i您可以尝试以下方法:
public int countDigits(String input) {
int digitsCount = 0;
for (int i = 0; i < input.length(); ++i) {
if (Character.isDigit(input.charAt(i))) {
++digitsCount;
} else {
break;
}
}
return digitsCount;
}
public int countDigits(字符串输入){
int-digitsCount=0;
对于(int i=0;i < /代码>好的,谢谢。我确实需要在中间改变你的循环来做RaviPut.Simult& & ISNUM,不确定我们是否只是在那个版本上使用不同的版本。
public int countDigits(String input) {
int digitsCount = 0;
for (int i = 0; i < input.length(); ++i) {
if (Character.isDigit(input.charAt(i))) {
++digitsCount;
} else {
break;
}
}
return digitsCount;
}