-2

出力ファイルに書き込まないこの部分で立ち往生しています

最初のクラスは contact です 変更する必要がありました これは私のクラスではありません 作者のクラスです 使用する必要がありました

    //********************************************************************  
// Contact.java Author: Lewis/Loftus  
//  
// Represents a phone contact.  
//********************************************************************  
public class Contact implements Comparable  
{  
 private String firstName, lastName, phone;  
  //-----------------------------------------------------------------  
  // Constructor: Sets up this contact with the specified data.  
  //-----------------------------------------------------------------  
  public Contact (String first, String last, String telephone)  
  {  
    firstName = first;  
    lastName = last;  
    phone = telephone;  
  }  
  //-----------------------------------------------------------------  
  // Returns a description of this contact as a string.  
  //-----------------------------------------------------------------  
  public String toString ()  
  {  
    return lastName + ", " + firstName + "\t" + phone;  
  }  
  //-----------------------------------------------------------------  
  // Returns true if the first and last names of this contact match  
  // those of the parameter.  
  //-----------------------------------------------------------------  
  public boolean equals (Object other)  
  {  
   return (lastName.equals(((Contact)other).getLastName()) &&  
   firstName.equals(((Contact)other).getFirstName()));  
  }  
  //-----------------------------------------------------------------  
  // Uses both last and first names to determine ordering.  
  //-----------------------------------------------------------------  
  public int compareTo (Object other)  
  {  
   int result;  
   String otherFirst = ((Contact)other).getFirstName();  
   String otherLast = ((Contact)other).getLastName();  

   if (lastName.equals(otherLast))  

      result = firstName.compareTo(otherFirst);  
   else  

      result = lastName.compareTo(otherLast);  

    return result;  
  }  
  //-----------------------------------------------------------------  
  // First name accessor.  
  //-----------------------------------------------------------------  
  public String getFirstName ()  
  {  
    return firstName;  
  }  
  //-----------------------------------------------------------------  
  // Last name accessor.  
  //-----------------------------------------------------------------  
  public String getLastName ()  
  {  
    return lastName;  
  }  
}  

このクラスはソートを行います。これで問題ありません。それはソートを問題なく行います

    public class Sorting {  

    public static void bubbleSortRecursive(Comparable[] data, int n)   
    {  

        if (n < 2)   
        {  
            return;  
        }  
        else  
        {  

            int lastIndex = n - 1;  

            for (int i = 0; i < lastIndex; i++)   
            {  
                if (data[i].compareTo(data[i + 1]) > 0)   
                { //swap check  

                    Comparable tmp = data[i];  
                    data[i] = data[i + 1];  
                    data[i + 1] = tmp;  
                }  
            }  

            bubbleSortRecursive(data, lastIndex);  
        }  
    }  

    public static void selectionSortRecursive(Comparable[] data, int n)   
    {  

        if (n < 2)   
        {  
            return;  
        }   
        else   
        {  

            int lastIndex = n - 1;  
            int largestIndex = lastIndex;  

            for (int i = 0; i < lastIndex; i++)   
            {  
                if (data[i].compareTo(data[largestIndex]) > 0)   
                {  
                    largestIndex = i;  
                }  
            }  

            if (largestIndex != lastIndex)   
            { //swap check  
                Comparable tmp = data[lastIndex];  
                data[lastIndex] = data[largestIndex];  
                data[largestIndex] = tmp;  
            }  

            selectionSortRecursive(data, n - 1);  
        }  
    }  
}  

これは私が助けを必要としている部分です。p4output.txt に出力されません。何が問題なのかわかりません。

    import java.io.BufferedWriter;  
import java.io.File;  
import java.io.FileWriter;  
import java.io.IOException;  


public class TestProject4 {  

    public static void main(String[] args)   
    {  

        doBubbleSortRecursive();  

        System.out.println();  
        System.out.println();  

        doSelectionSortRecursive();  

    }  
    private static void doBubbleSortRecursive()  
    {  
        Contact[] contacts = createContacts();  

        System.out.println("Before bubbleSortRecursive(): ");  
        for (int i=0; i<contacts.length; i++)  
        System.out.println(contacts[i].toString());  


        Sorting.bubbleSortRecursive(contacts, contacts.length);  

        System.out.println("\nAfter bubbleSortRecursive(): ");  
        for (int i=0; i<contacts.length; i++)  
        System.out.println(contacts[i].toString());  
    }  

    private static void doSelectionSortRecursive()   
    {  
        Contact[] contacts = createContacts();  


        System.out.println("Before selectionSortRecursive(): ");  
        for (int i=0; i<contacts.length; i++)  
        System.out.println(contacts[i].toString());  

        Sorting.selectionSortRecursive(contacts, contacts.length);  

        System.out.println("\nAfter selectionSortRecursive(): ");  
        for (int i=0; i<contacts.length; i++)  
        System.out.println(contacts[i].toString());  
    }  

    private static void printContacts(Contact[] contacts)  
    {  

        try   
        {  

        // this part I need help with it is not outputing in the text file   
                    File file = new File("p4output.txt");  
            FileWriter fw = new FileWriter(file.getAbsoluteFile());  
            BufferedWriter bw = new BufferedWriter(fw);  

            for (Contact contact : contacts)  
             {  
                bw.write(contact.toString());       
             }              
              bw.close();  
        }  

        catch (IOException e)   
        {  
           e.printStackTrace();  
        }  

       System.out.println("\t" + contacts);  
    }  
    public static Contact[] createContacts()   
    {  
        return new Contact[]   
        {  
            new Contact("John"  , "Smith" , "610-555-7384"),  
            new Contact("Sarah" , "Barnes"   , "215-555-3827"),  
            new Contact("Mark"  , "Riley", "333-333-3333"),  
            new Contact("Laura"   , "Getz"  ,"663-555-3984"),  
            new Contact("Larry"  , "Smith"  , "464-555-3489"),  
            new Contact("Frank"  , "Phelps" , "322-555-2284"),  
            new Contact("Mario"    , "Guzman" , "804-555-9066"),  
            new Contact("Marsha"    , "Grant" , "243-555-2837"),  
        };  
     }  
 }  
4

2 に答える 2

0

プログラムで関数 printContacts() を呼び出していないようです。連絡先の作成と並べ替えを行った後、呼び出してみてください。

次のようになります。

public static void main(String[] args)   
{  

    doBubbleSortRecursive();  

    System.out.println();  
    System.out.println();  

    doSelectionSortRecursive();  
    printContacts(contactArray);//inserted code
}  

また、並べ替えメソッド doSelectionSortRecursive() を呼び出しても、連絡先のリストは返されません。return ステートメントを作成し、連絡先配列を printContacts 関数に入れます。

次に例を示します。

public static void main(String[] args)   
{  

    doBubbleSortRecursive();  

    System.out.println();  
    System.out.println();  

    Contact[] contacts = doSelectionSortRecursive();  
    printContacts(contacts);
}  

public static Contact[] doSelectionSortRecursive(){
    Contact[] contacts = createContacts();
    //your sorting code
    return contacts;
}

このメソッドを使用すると、ソートされた連絡先の配列をメソッドから取得できます。

于 2013-04-09T23:18:23.343 に答える