2014-09-19 86 views
2

任何人都可以帮助我解决我的代码中的错误? 我一直在努力,努力,并不能找到解决办法。现在我的脑子是烤..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的范围内。请给我一些建议!

+0

嗯..你会如何解决这个问题?我使用Jeliot来检查错误,除了返回语句之外,一切都很完美。:/ – 2014-09-19 15:49:36

回答

1

我想你需要下面,使用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); 
} 
+0

嗯..这是一个任务,我们应该使用“公共静态字符串revio(字符串[] a) 我已经试过了你的方式:/。我所得到的关于N-1的所有答案都是错误的..我之前也试过它.. – 2014-09-19 15:55:19

+0

@DerikDaro查看我的更新回答 – BatScream 2014-09-19 16:00:19

+0

我不想输入任何东西,这是不可接受的。 – 2014-09-19 16:01:38

0

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

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

+0

我之前尝试过,但后来我的数组中只有一个值是“1”。 – 2014-09-19 15:48:17

+0

@DerikDaro看我的编辑 – gefei 2014-09-19 15:50:15

6

你的循环是好的,但你在哪里的方法返回该行是访问无效指数(3)

reverse[N]; 

将其更改为例如

reverse[N - 1]; 

,它应该工作

1

您不能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. 
+0

这是行不通的。在结果中,我只得到一个值“1”:/ – 2014-09-19 15:57:02

+0

当你返回一个String时,你只会得到一个结果。你能指望什么?如果你想要整个数组,你将需要改变返回类型,并返回数组“reverse”。 – 2014-09-19 15:57:43