求教关于javaString数组输入的问题

import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{

Scanner s = new Scanner(System.in);

int t = s.nextInt();
String[] strings = new String[t];
for(int a=0;a<t;a++)
{
strings[a] = s.nextLine();
}
for(int b=0;b<t;b++)
{
load(strings[b]);
}

}
public static void load(String ball)
{ String fir = "1";
int len = ball.length();
for(int c=0;c<len;c++)
{ String temp = ball.substring(c,c+1);
boolean flag = fir.equals(temp);
if(flag==true){System.out.println("love j");}
else{System.out.println("love x");}
}
}

}
实际运行的时候循环会少一次 比如t=2会只有一次的输入
进行测试
import java.util.Scanner;
public class test{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
int t = s.nextInt();
String[] strings1 = new String[t];
int len = strings1.length;
System.out.println(len);
/** for(int i=0;i<t;i++)
{

String str = s.nextLine();
strings1[i] = str;
System.out.println(i);
} */
}
}
如果是test的上一部分,那么可以获得正常的len 大小 如果加上test 的下部分那么例如输入2会输出的len 为
2
0
我很困惑哪里出现了问题?

首先 str = new String[4]; 改成 str = new String[5];方括号里的是长度而不是下标
错误提示里:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 是指数组越界后面的4代表长度4,不可以放进5个字符。
第二,对于数组用for循环会更方便一些,第二个while循环里不能还用i ,太粗心了用i的话j定义干什么用,这是i=0 必然只能读到一个字符。
最后说一下,做这个问题可以换一下方法或者加大一些难度,比如说输入一句话“java”返回一句“avaj”而不是一个个输入,多注意一下数组越界和循环问题,建议一般不要用++i --i 最好用i++ i-- ,不知道你做到别的题的时候会不会混,符号在后用的比较多
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答