尝试在字符串数组中输入值

时间:2017-06-02 12:46:42

标签: java arrays string

我正在尝试提取字符串的某些部分并将它们存储在数组中。 这是代码。

public static void main(String[] args) {
    Scanner ob = new Scanner(System.in);
    String s = ob.next();
    int l = ob.nextInt();
    int t = s.length();
    String arr[] = new String[10];
    String x;
    int i, j;
    int k = 0;
    for (i = 0; i < t; i++) {
        x = s.substring(i, i + l);
        arr[k] = x;
        k++;
        System.out.println(arr[k]);
    }
}

数组值显示为null。

3 个答案:

答案 0 :(得分:0)

这是问题所在。假设k0

arr[k]=x; // arr[0] = x
k++;      // k = k+1 = 1
System.out.println(arr[k]);  // print arr[k] = print arr[1] -> null

在递增k前打印:

arr[k]=x;
System.out.println(arr[k]);
k++;

答案 1 :(得分:0)

你在打印后使用k ++,所以任何方式都没有填充该值并打印null。第二个你正在执行s.substring(i,i + l)所以在循环中如果你做到t然后它会抛出异常

Scanner ob = new Scanner(System.in);
        String s = ob.next();
        int l = ob.nextInt();
        int t = s.length();
        String arr[] = new String[10];
        String x;
        int i, j;
        int k = 0;
        for (i = 0; i < t-1; i++) {
            x = s.substring(i, i + l);
            arr[k] = x;
            System.out.println(arr[k]);
            k++;
        }

答案 2 :(得分:0)

您的代码中存在许多问题:

首先:

打印数组值

后,必须递增k

第二名:

您将收到java.lang.StringIndexOutOfBoundsException: String index out of range ...错误,因为您从0循环到n并且您使用的s.substring(i, i + l);可能导致此错误,因此要解决此问题,您可以使用:

for (i = 0; i < s.length() - l + 1; i++) {
//--------------^________________^

您的代码应如下所示:

Scanner ob = new Scanner(System.in);

System.out.print("Enter the String :");
String s = ob.next();

System.out.print("Enter the length :");
int l = ob.nextInt();

String arr[] = new String[10];
String x;
int i, j;
int k = 0;
for (i = 0; i < s.length() - l + 1; i++) {
    x = s.substring(i, i + l);
    arr[k] = x;
    System.out.println(arr[k]);
    k++;
}

注意,以帮助您的用户使用您的程序,像以前一样添加一些消息。

System.out.print("Enter the String :");
...
System.out.print("Enter the length :");