0

配列を返すことに問題があります。

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];
        }
    }
4

2 に答える 2

1

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]);
            }
于 2013-03-02T19:43:36.897 に答える
0

メソッド"Incompatible types"の戻り型がであり、 ( )を返そうとしているため、エラーが発生します。を返したい場合は、メソッドの戻り値のタイプをの代わりに変更する必要があります。abel()String[]Stringtab[i]tab[i]abel()StringString[]

配列全体を返す場合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();
    }

}
于 2013-03-02T19:56:02.580 に答える