【问题标题】:Array Index Out of Exception in JavaJava中的数组索引超出异常
【发布时间】:2014-11-14 06:31:43
【问题描述】:

谁能帮我修复代码中的错误? 我一直在尝试和尝试,但找不到解决方案..我的大脑现在被烤了..

这是我的代码:

    public static String revio(String[] a){
        int N = a.length;
        String[] reverse = new String[N];
        for (int i = 0; i < N ; i++) {
            reverse[i] = a[N-i-1];

        }
        return reverse[N];         
}
    public static void main (String[] args)
    {
        String[] myArray = {"1", "2", "3"};  
        String arr = revio(myArray);
        System.out.println(arr);

    }
}

我知道我不断收到错误,因为我的数组在 0 到 2 的范围内,它试图访问不在 0 到 2 范围内的索引 3。请给我一些建议!

【问题讨论】:

  • 嗯.. 你会如何解决它?我使用 Jeliot 来检查错误,除了 return 语句之外,一切都很好。:/

标签: java arrays function loops


【解决方案1】:

您的循环没问题,但您从该方法返回的行正在访问无效索引 (3)

reverse[N]; 

将其更改为例如

reverse[N - 1];

它应该可以工作

【讨论】:

    【解决方案2】:

    我认为您需要以下内容,请使用Arrays.toString()StringBuilder

    import java.util.Arrays;
    
    public static String revio(String[] a){
      int N = a.length;
      String reverse = new String[N];
      for (int i = 0; i < N ; i++) {
      reverse[i] = a[N-i-1];  
      }
      return Arrays.toString(reverse); 
      }
    
     //using StringBuilder
      public static String revio(String[] a){
      int N = a.length;
      StringBuilder reverse = new StringBuilder();
      for (int i = 0; i < N ; i++) {
      reverse.append(a[N-i-1]);  
      }
      return reverse.toString(); 
      }
    
    
    public static void main (String[] args)
    {
      String[] myArray = {"1", "2", "3"};  
      String arr = revio(myArray);
      System.out.println(arr);
    }
    

    【讨论】:

    • 嗯..这是一个任务,我们应该使用“public static String revio(String[] a) 我已经按照你的方式尝试过:/。我不断得到关于 N 的所有答案-1 是错误的..我以前也试过..
    • 我不想导入任何东西。这是不可接受的。
    • @DerikDaro - 使用 StringBuilder 查看我的更新答案
    【解决方案3】:

    您无法访问 array.length 处的元素,因为 Java 从 0(而不是 1)开始索引。

    int N = a.length;
    String[] reverse = new String[N];
    for (int i = 0; i < N ; i++) {
      reverse[i] = a[N-i-1];
    }
    return reverse[N - 1]; // <-- the last element. 
    

    【讨论】:

    • 这不起作用。我的结果中只有一个值“1”:/
    • 当您返回 String 时,您只会得到一个结果。你能指望什么?如果您想要整个数组,则需要更改返回类型,并返回数组reverse
    【解决方案4】:

    return reverse[N]; 是问题所在。应该是返回reverse[N-1];

    如果你想返回整个反转数组,你应该使用return reesrve;

    【讨论】:

    • 我之前尝试过,但后来我的数组中只有一个值是“1”。
    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多