返回/打印阵列

返回/打印阵列

问题描述:

我有一个返回数组的问题。返回/打印阵列

package iterators; 

import java.util.*; 
import java.io.*; 


public class Nic { 
    String[] abel() throws IOException { 
     int i = 0; 
     BufferedReader wczytaj = new BufferedReader(new FileReader("filmy.txt")); 
     StringBuilder sb = new StringBuilder(); 
     String tekst = wczytaj.readLine(); 
     while (tekst != null) { 
      sb.append(tekst); 
      sb.append("\n"); 
      tekst = wczytaj.readLine(); 
     } 
     String calosc = sb.toString(); 
     String film = calosc; 
     String znak = ","; 
     String[] tab; 
     tab = film.split(znak); 
     for (i = 0; i < tab.length; i++) { 
      System.out.println("listusia: " + i + " " + tab[i]); 
     } 
     List<String> list = Arrays.asList(tab); 
     Collections.reverse(list); 
     tab = (String[]) list.toArray(); 
     for (i = 0; i < tab.length; i++) { 
      System.out.println(tab[i]); 
     } 
     return tab; 
    } 
} 

我想返回一个数组,在这里印刷:

for(i=0;i<tab.length;i++){ 
    System.out.println(tab[i]); 
} 

,但我有问题。无法返回tab [i],因为它给我一个错误“不兼容的类型”。我需要这个数组来执行其他操作。任何人都可以帮我吗?

这是更改后我的代码:

package iterators; 
import java.util.*; 
import java.io.*; 
public class Nic{ 
     String abel() throws IOException{ 
      int i=0; 
      BufferedReader wczytaj = new BufferedReader(new FileReader("filmy.txt")); 
      StringBuilder sb=new StringBuilder(); 
      String tekst=wczytaj.readLine(); 
      while (tekst!=null) { 
       sb.append(tekst); 
       sb.append("\n"); 
       tekst=wczytaj.readLine(); 
      } 
      String calosc=sb.toString(); 
      String film=calosc; 
      String znak=","; 
      String[]tab=new String[301]; 
      tab=film.split(znak); 
      for(i=0;i<tab.length;i++){ 
       //System.out.println("listusia: "+i+" "+tab[i]); 
      } 
      List<String> list=Arrays.asList(tab); 
      Collections.reverse(list); 
      tab = (String[]) list.toArray(); 
      for(i=0;i<tab.length;i++){ 
       //System.out.println(tab[i]); 
      } 
      return tab[i]; 
     } 
    } 
+0

我测试了这段代码,它工作正常。你能分享到底你是怎么称呼'abel'的方法吗? – vikingsteve 2013-03-02 19:49:52

+0

它工作正常,但输出是[Ljava.lang.String; @(and_some_numbers) – Jadea 2013-03-02 19:56:46

你所得到的错误"Incompatible types"因为你abel()方法的返回类型是String[]和你试图返回Stringtab[i])。如果您想返回tab[i],则必须将abel()方法的返回类型更改为String而不是String[]

如果要返回整个数组,请使用String[]返回类型。它会起作用。

import java.util.*; 
import java.io.*; 


public class Nick { 
    String[] abel() throws IOException { 
     int i = 0; 
     BufferedReader wczytaj = new BufferedReader(new FileReader("filmy.txt")); 
     StringBuilder sb = new StringBuilder(); 
     String tekst = wczytaj.readLine(); 
     while (tekst != null) { 
      sb.append(tekst); 
      sb.append("\n"); 
      tekst = wczytaj.readLine(); 
     } 
     String calosc = sb.toString(); 
     String film = calosc; 
     String znak = ","; 
     String[] tab; 
     tab = film.split(znak); 
     for (i = 0; i < tab.length; i++) { 
      System.out.println("listusia: " + i + " " + tab[i]); 
     } 
     List<String> list = Arrays.asList(tab); 
     Collections.reverse(list); 
     tab = (String[]) list.toArray(); 
     for (i = 0; i < tab.length; i++) { 
      System.out.println(tab[i]); 
     } 
     return tab; 

    } 

    public static void main(String[] args) throws IOException { 
     Nick nick = new Nick(); 
     nick.abel(); 
    } 

} 
+0

好吧,我改变了它,但现在它让我“ArrayIndexOutOfBoundsException”:/ – Jadea 2013-03-02 20:06:52

+0

你可以发布完整的stackTrace吗? – 2013-03-02 20:09:27

+0

java.lang.ArrayIndexOutOfBoundsException:301 \t在iterators.Nic.abel(Nic.java:33) \t在迭代器.__ SHELL37.run(__ SHELL37.java:11)​​ \t在sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法) \t在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) \t在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) \t在java.lang.reflect.Method.invoke( Method.java:601) \t at bluej.runtime.ExecServer $ 3.run(ExecServer.java:725) – Jadea 2013-03-02 20:21:51

List#toArray()返回Object[]阵列。改为使用超载List#toArray(T[])

tab = list.toArray(new String[list.size()]); 
            for(i=0;i<tab.length;i++){ 
                System.out.println(tab[i]); 
            } 
+1

发送'new String [0]'参数时不需要重新发送(请小心做一个测试?)。 – 2013-03-02 19:46:29

+0

哎呀,它是复制/粘贴错误.. :) – PermGenError 2013-03-02 19:47:08

+0

他在哪里发送'新的String [0]'作为参数? – vikingsteve 2013-03-02 19:47:58