2014-12-07 2 views
0

Группа друзей и я занимаемся секретным обменом santa, и я решил сделать программу для рандомизации и распечатки основного списка, который у меня был бы, для удовольствия. Вот что я до сих пор. У меня проблема с линией String random1 = sList.get(myRandomizer.nextInt(sList.size()));Выбор, удаляющий случайные элементы из ararylist

Это ошибка, что я делаю несовместимые типы, но я уверен, что она возвращает то, что нужно?

Вот мой начальный класс

import java.io.Serializable; 
public class SpecifiedData implements Serializable 
{ 
    private String name; 
    public SpecifiedData(String name) 
    { 
     this.name = name; 
    } 
    public String getName() 
    { 
     return name; 
    } 
} 

Вот мой тестовый класс, где мои ошибки

import java.util.*; 
import java.io.*; 
public class Randomizer 
{ 
    public static void main(String[] args) throws IOException, ClassNotFoundException 
    { 
     Random myRandomizer = new Random(); 
     boolean done = false; 
     ArrayList<SpecifiedData> sList = new ArrayList<SpecifiedData>(); 
     File sFile = new File("Participants.dat"); 
     if(sFile.exists()) 
     { 
      FileInputStream myFIS = new FileInputStream(sFile); 
      ObjectInputStream sIn = new ObjectInputStream(myFIS); 
      sList = (ArrayList<SpecifiedData>)sIn.readObject(); 
      sIn.close(); 
     } 
     do 
     { 
      Scanner myScanner = new Scanner(System.in);   
      while (!done) 
      { 
       System.out.println("1 - add a person"); 
       System.out.println("2 - display all people"); 
       System.out.println("3 - delete person"); 
       System.out.println("4 - randomize"); 
       System.out.println("5 - exit"); 
       int choice = Integer.parseInt(myScanner.nextLine()); 
       if (choice == 1) 
       { 
        System.out.print("Enter person's name: "); 
        String participantsName = myScanner.nextLine(); 
        SpecifiedData mySpecifiedData = new SpecifiedData(participantsName); 
        sList.add(mySpecifiedData); 
       } 
       else if (choice == 2) 
       { 
        for(int i = 0; i < sList.size(); i++) 
         System.out.println(sList.get(i).getName()); 
       } 
       else if (choice == 3) 
       { 
        System.out.println("Enter persons name: "); 
        String participantsName = myScanner.nextLine(); 
        for(SpecifiedData mySpecifiedData : sList) 
        { 
         if(mySpecifiedData.getName().equals(participantsName)) 
         { 
          sList.remove(mySpecifiedData); 
          break; 
         } 
        } 
       } 
       else if (choice == 4) 
       { 
        for(int i = 0; i < (sList.size()/2); i++) 
        { 
        for(SpecifiedData mySpecifiedData : sList) 
        { 
         String random1 = sList.get(myRandomizer.nextInt(sList.size())); 
         if(mySpecifiedData.getName().equals(random1)) 
         { 
          System.out.println(random1 + "  "); 
          sList.remove(random1); 
          break; 
         } 
         String random2 = sList.get(myRandomizer.nextInt(sList.size())); 
         if(mySpecifiedData.getName().equals(random2)) 
         { 
          System.out.print(random2); 
          sList.remove(random2); 
          break; 
         } 
        } 
        }  
       } 
       else if(choice == 5) 
       { 
        done = true; 
       }  
       else 
        System.out.println("Invalid menu choice!"); 
      } 
      System.out.println("Goodbye!"); 
     }while(!done); 
     FileOutputStream myFOS = new FileOutputStream(sFile); 
     ObjectOutputStream sOut = new ObjectOutputStream(myFOS); 
     sOut.writeObject(sList); 
     sOut.close(); 
    }  
} 

ответ

0

SLIST объявлен как ArrayList, который содержит объекты типа SpecifiedData. На этой строке вы получаете объект из списка и пытаетесь присвоить его String. Вы должны назначить его SpecifiedData.

SpecifiedData random1 = sList.get(myRandomizer.nextInt(sList.size())); 
0

sList список типа SpecifiedData, не String так эта ошибка совершенно нормально. Кстати, вы удаляете элементы из списка, который вы просматриваете ... плохая идея. Я не внимательно смотрел на ваш код, но одно можно сказать наверняка: вы должны его улучшить.

Смежные вопросы