我正在尝试提取字符串的某些部分并将它们存储在数组中。 这是代码。
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。
答案 0 :(得分:0)
这是问题所在。假设k
为0
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 :");