此代码显示null
作为输出。请告诉我我的代码的哪一部分会出错?
public class Compre {
public static void main(String[] args) {
String a="abcefgh";
String ar[]=a.split("");
String arr[]=new String[100];
int j=0;
for(int i=a.length()-1;i<0;--i){
arr[j]=ar[i];
}
++j;
System.out.println(arr[j]);
}
}
答案 0 :(得分:2)
问题出在for循环中,将其更改为:
for(int i=a.length()-1;i>=0;--i){
arr[j++]=ar[i];
}
然后在arr
你反转了一个。但是,尝试打印arr[j]
毫无意义,因为它必须是null
,因为您只需在j
的最后一个索引处增加string
。
答案 1 :(得分:2)
您的代码存在一些问题,我将介绍所有这些问题:
无需使用split
方法,您可以在此问题中使用charAt
方法
您认为ar的length
最多为100
?如果我输入长度为a
或更长的101
,您的程序将失败,则可以使用以下方法:
String arr[]=new String[a.length];
不需要String
,因为String
本身是array
个char
字符,因此您可以使用此代码:< / p>
char arr[]=new char[a.length];
您的循环condition
首先错误,因为"abcdefg"
的长度等于7
,但您说{{1} },它是不 i<0
,因此循环不会启动,您可以在条件中重写true
:
i>=0
你必须在循环内增加for(int i=a.length()-1;i>=0;--i)
的值,而不是在...之外:
j
或者使用此相等,我更喜欢来使用它:
int j=0;
for(int i=a.length()-1;i>=0;--i)
{
arr[j]=ar.charAt(i);
++j;
}
然后打印你的反转阵列:
int j=0;
for(int i=a.length()-1;i>=0;--i)
arr[j++]=ar.charAt(i);
答案 2 :(得分:1)
首先:您的问题是您永远不会进入循环。
您将我初始化为a.length()-1
,这是6.然后,您的 for循环条件是i<0
;这样,您永远不会将任何值放入arr,arr[j]
为null
,因为它未初始化。
第二: ++j
应该在循环中。
第三:当您最后打印值时,应该打印arr [ - j](最后一个值)。
固定代码:
public static void main(String[] args) {
String a="abcefgh";
String ar[]=a.split("");
String arr[]=new String[100];
int j=0;
for(int i=a.length()-1; i>=0 ;--i){ // Your problem is here
arr[j]=ar[i];
++j; // And here
}
System.out.println(arr[--j]); // And here
}
这应该可以正常工作。