-1

このプログラムでは、ファイルを配列に読み込んで配列を分割することができます。次に、バブルソートを使用してファイルを名前でソートする配列メソッドを取得しました。ただし、エラーが発生します。誰か助けてくれませんか。

エラー:

エラー:StudentSortクラスのメソッドBubbleCountryは、指定されたタイプに適用できません。

StudentSort.txt

Bren    Ramal
Casi    Ron
Alba    Jordi   

SortDataファイル

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


class ShowSort implements Comparable {      
    private String name;
    private String surname;


    public void setName(String name) {
            this.name = name;
    }

    public String getName() {
            return name;
    }

    public void setSurname(String surname) {
            this.surname = surname;
    }

    public String getSurname() {
            return surname;
    }


    public int compareTo(Object Student) throws ClassCastException {
            if (!(Student instanceof ShowSort))
                  throw new ClassCastException("Error");
            String surn = ((ShowSort) Student).getSurname();
            return this.surname.compareTo(surn); 
    }


    }

StudentSortファイル

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

public class StudentSort {
    StudentSort() {

    int j = 0;
    ShowSort data[] = new ShowSort[3];

    try {
        FileInputStream fstream = new FileInputStream("StudentSort.txt");
        // Use DataInputStream to read binary NOT text.
        BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

        String line;
        ArrayList list = new ArrayList();
        while ((line = br.readLine()) != null) {
                list.add(line);
        }
        Iterator itr;
        for (itr = list.iterator(); itr.hasNext();) {
                String str = itr.next().toString();
                String[] splitSt = str.split("\t");
                String name = "", surname = "";
                for (int i = 0; i < splitSt.length; i++) {
                name = splitSt[0];
                surname = splitSt[1];


        }

        BubbleCountry(surname);//This is the issue.

        data[j] = new ShowSort();
        data[j].setName(name);
        data[j].setSurname(surname);


        j++;
        }

        for (int i = 0; i < 3; i++) {
        ShowSort show = data[i];
        String name = show.getName();
        String surname = show.getSurname();

        System.out.println(name + "\t" + surname);

        }



        } catch (Exception e) {
        }

        }           



        private static void BubbleCountry(String[] myarray) {
        String ctry;
        for(int i=0; i<myarray.length; i++) {
            for(int j=0; j<myarray.length-1-i; j++) {
            if(myarray[j].compareTo(myarray[j+1])>0) {
            ctry= myarray[j];
            myarray[j] = myarray[j+1];
            myarray[j+1] = ctry;
                }
            }
        }

        }





    public static void main(String[] args) {
            StudentSort data = new StudentSort();
    }
}
4

1 に答える 1

1

あなたは呼んでいますBubbleCountry(surname);が、そのプロトタイプは示しています

private static void BubbleCountry(String[] myarray)

違いはここにあります。この関数は引数として文字列の配列を必要としますが、呼び出し中に文字列配列ではなく文字列を渡します。

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

public class StudentSort 
{
    StudentSort() 
    {

        int j = 0;
        ShowSort data[] = new ShowSort[3];

        try 
        {
            FileInputStream fstream = new FileInputStream("StudentSort.txt");
            // Use DataInputStream to read binary NOT text.
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

            String line;
            ArrayList<String> list = new ArrayList<String>();
            while ((line = br.readLine()) != null) 
            {
                    list.add(line);
            }   
            Iterator<String> itr = list.iterator();
            int k = 0;
            for (itr = list.iterator(); itr.hasNext();itr.next()) 
            {
                    String str = itr.toString();
                    String[] splitSt = str.split("\t");

                    data[k].setName(splitSt[0]);
                    data[k].setName(splitSt[1]);
                    k++;
            }
            BubbleCountry(data);//This is the issue.


            for (int i = 0; i < 3; i++) 
            {
                ShowSort show = data[i];
                String name1 = show.getName();
                String surname1 = show.getSurname();

                System.out.println(name1 + "\t" + surname1);

            }



        } 
        catch (Exception e) 
        {
        }

    }           



    private static void BubbleCountry(ShowSort[] myarray) 
    {
        ShowSort ctry;
        for(int i=0; i<myarray.length; i++) 
        {
            for(int j=0; j<myarray.length-1-i; j++) 
            {
                if(myarray[j].compareTo(myarray[j+1])>0) 
                {
                    ctry= myarray[j];
                    myarray[j] = myarray[j+1];
                    myarray[j+1] = ctry;
                }
            }
        }

    }





    public static void main(String[] args) 
    {
            StudentSort data = new StudentSort();
    }
}
于 2013-03-04T21:04:40.653 に答える