2014-12-07 2 views
0

친구들과 나는 비밀의 산타 교환을하고 있으며 재미로 마스터 목록을 무작위로 만들고 인쇄하기로 결정했습니다. 여기 내가 지금까지 가지고있는 것이있다. 줄에 문제가 있습니다. String random1 = sList.get(myRandomizer.nextInt(sList.size()));다음 arraylist에서 임의의 요소를 제거한 후

오류가 발생합니다. 호환되지 않는 유형의 오류가 발생하지만 정상적으로 돌아 오는 것은 확실합니다.

은 여기 내 초기 클래스

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 유형 SpecifiedData의 객체를 포함하는 ArrayList를 선언되어 있습니다 내 테스트 클래스입니다. 그 줄에서 당신은리스트로부터 객체를 얻고 그것을 String에 할당하려고 시도합니다. SpecifiedData에 지정해야합니다.

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

sList 유형 SpecifiedData의 목록입니다하지 String 때문에이 오류가 완벽하게 정상입니다. 그런데, 당신은 당신이 지나가고있는 목록에서 요소들을 제거하고 있습니다 ... 나쁜 생각입니다. 나는 당신의 코드를주의 깊게 보지 않았지만 한 가지 확실한 점은 그것을 향상시켜야한다는 것이다.

관련 문제