题目的想法是,,,,想让用户输入一个字符串,然后把字符串的长度给数组,,但是为啥下面的代码会出错呢百思不得其解!!!import java.util.Scanner;
public class ArrayTest {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String a = s.nextLine();
String[] b = new String[a.length()-1];
for(int i = 0;i <= b.length;i++)
{
b[i] = "a";
System.out.println(b[i]);
} }
}
输入:213
下面是结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 //为啥会提示超界呢,
at ArrayTest.main(ArrayTest.java:9)
a
a
public class ArrayTest {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String a = s.nextLine();
String[] b = new String[a.length()-1];
for(int i = 0;i <= b.length;i++)
{
b[i] = "a";
System.out.println(b[i]);
} }
}
输入:213
下面是结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 //为啥会提示超界呢,
at ArrayTest.main(ArrayTest.java:9)
a
a
for(int i = 0;i <= b.length;i++)改成for(int i = 0;i < b.length;i++)
如果小于的话 我输入 asd 他只打印 a a 两个元素,,应该是输入几个元素,就打印几个元素呀
我猜你的意思是把输入的字符串复制到数组了,String[] b = a.split("");就可以了
Scanner s = new Scanner(System.in);
String a = s.nextLine();
String[] b = new String[a.length()];
for (int i = 0; i < b.length; i++) {
b[i] = "a";
System.out.println(b[i]);
}
只不过你循环了取值是从下标为0开始取而已、
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String a = s.nextLine();
String[] b = new String[a.length()];
String[] str = a.split("");
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < str.length; j++) {
if ((i + 1) == j) {
b[i] = str[j];
}
}
}
}
String str = scan.nextLine() ;
int n = str.length() ;
char[] ch = new char[n] ;
for(int i=0;i<n;i++){
ch[i] = str.charAt(i) ;
}