簡體   English   中英

Java中的數組索引超出異常

[英]Array Index Out of Exception in Java

任何人都可以幫我修復我的代碼中的錯誤嗎? 我一直在努力嘗試並且找不到解決方案..我的大腦現在被烤了..

這是我的代碼:

    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的范圍內,它試圖訪問索引3,它不在0到2的范圍內。請給我一些建議!

你的循環沒問題,但是從方法返回的行是訪問無效索引(3)

reverse[N]; 

將其改為例如

reverse[N - 1];

它應該工作

您無法訪問array.length的元素,因為Java array.length索引從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. 

我認為你需要以下,使用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);
}

return reverse[N]; 是問題。 它應該是reverse[N-1];

如果你想返回整個反轉數組,你應該使用return reesrve;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM