字符串数组反向而不使用字符串函数

时间:2017-01-29 10:44:44

标签: java arrays string

此代码显示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]);
    }
 }

3 个答案:

答案 0 :(得分:2)

问题出在for循环中,将其更改为:

for(int i=a.length()-1;i>=0;--i){
        arr[j++]=ar[i];
    }

然后在arr你反转了一个。但是,尝试打印arr[j]毫无意义,因为它必须是null,因为您只需在j的最后一个索引处增加string

答案 1 :(得分:2)

您的代码存在一些问题,我将介绍所有这些问题:

  1. 无需使用split方法,您可以在此问题中使用charAt方法

  2. 您认为ar的length最多为100?如果我输入长度为a或更长的101,您的程序将失败,则可以使用以下方法:

    String arr[]=new String[a.length];
    
  3. 不需要String,因为String本身是arraychar字符,因此您可以使用此代码:< / p>

    char arr[]=new char[a.length];
    
  4. 您的循环condition首先错误,因为"abcdefg"的长度等于7,但您说{{1} },它是 i<0,因此循环不会启动,您可以在条件中重写true

    i>=0
  5. 你必须在循环内增加for(int i=a.length()-1;i>=0;--i) 的值,而不是在...之外:

    j
  6. 或者使用此相等,我更喜欢来使用它:

    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

}

这应该可以正常工作。