题目的想法是,,,,想让用户输入一个字符串,然后把字符串的长度给数组,,但是为啥下面的代码会出错呢百思不得其解!!!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

解决方案 »

  1.   

    i <= b.length应该是小于就好了吧
      

  2.   


    for(int i = 0;i <= b.length;i++)改成for(int i = 0;i < b.length;i++)
      

  3.   


    如果小于的话   我输入   asd   他只打印  a  a  两个元素,,应该是输入几个元素,就打印几个元素呀
      

  4.   

     不是<= 是< ;b[i] = "a";数组里不就全是a嘛,你的输入没有读到
    我猜你的意思是把输入的字符串复制到数组了,String[] b = a.split("");就可以了
      

  5.   


    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]);
    }
      

  6.   

    大哥、String[] str = new String[4];这个str数组的长度就是4、怎么成5了?
    只不过你循环了取值是从下标为0开始取而已、
      

  7.   

    简单改造一下、实现你说的那个什么身份证号码的效果、
    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];
    }
    }
    }
    }
      

  8.   

    用char类型接收的话可以这样Scanner scan = new Scanner(System.in) ;
    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) ;
    }