Member 13492392 Ответов: 1

Java: как добавить имена семейства в методе к внешнему файлу с помощью класса filewriter?


  static String fileName= "HW13_DataFile.txt";

    public static void main(String[] args) {
        // TODO code application logic here
        
        String name;          // Family's last name 
        String family[];      // array that will contain all family members
        
                    // Ask for the family name
            name = JOptionPane.showInputDialog(null, 
                    "What is the name of the family?");
            
            family = getFamily(name);
            
            writeData(family);  
            
 
    }
    
   
    public static String [] getFamily(String name) {
       String ans;       // answer. Stores string.
       int count;        // Converts 'ans' string to integer.
       String first;     // Stores each family member first name. 
       int cont;
      
       
       // input dialog
       ans = JOptionPane.showInputDialog(null, "How many members in the " + name +
                " Family?");
       
       // converts users input into a number
       count = Integer.parseInt(ans);
       
       // string array stores the number of family members 
       String[] family = new String[count];
       
       // for loop 
       for (int num = 0; num < family.length; num++) {
           
        // input dialog
        first = JOptionPane.showInputDialog(null, "Enter first name: " 
                + (num + 1));
        
        // array stores first and last name of each family member
        family[num] = first + " " + name;
        
       }
       cont = JOptionPane.showConfirmDialog(null,
                    "Do you want to add another name?", 
                    "Enter Names", JOptionPane.YES_NO_OPTION);
        
        while (cont == JOptionPane.YES_OPTION);
        
       return family;
    }
    
    private static void writeData(String family) throws IOException {
        
        try (FileWriter fw = new FileWriter(fileName, true)) {
            fw.append(family);
            fw.close();
        }
    }
}

writeData - Append the names of one family to an external file, with each family using one line.
Use the FileWriter class.


Что я уже пробовал:

Я пробовал то, что есть в коде, который я написал, но я знаю, что это неправильно.

Afzaal Ahmad Zeeshan

Тогда что же является правильным, если вы знаете эту часть.

Во-вторых, в чем проблема с кодом. Вы не можете ожидать, что мы напишем код в наших IDE, протестируем его и затем предоставим решение.

Member 13492392

Когда я возвращаю writeData(family); в main он говорит, что несовместимые типы string [] не могут быть преобразованы в String

1 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Это происходит потому, что ваши функции и их возвращаемые типы имеют несоответствие. Взгляните на свои функции,

public static String[] getFamily(String name)

public static void writeData(String family)

Я понимаю, что вы хотите запечатлеть фамилии, а затем написать их по одному — или вместе. Однако вы пытаетесь спасти его. Но проблема в том, что ваш тип параметра String, и аргументы, которые вы передаете, таковы: String[].

family = getFamily(name); // String[]
writeData(family);        // accepts String

Это проблема, вы не можете ожидать, что ослы займут место лошадей, и поэтому вам нужно убедиться, что только лошади будут переданы в эту функцию. Существует несколько способов сделать это, один из которых-изменить сигнатуру функции,
public static void writeData(String[] familyNames)

Затем добавьте цикл для записи данных для каждого семейства. В противном случае гораздо более простой способ-это перебирать результат getFamily и сохранять их имена один за другим, что будет проще, например так,
family = getFamily(name);

for (String name : family) {
    writeData(name); // String is passed
}

Таким образом, ваш код будет одинаковым, а типы данных будут совпадать.