2017-02-12 3 views
1

Мои три подкласса - это ток-шоу, песня и реклама для радиокласса. У меня только ток-шоу показано здесь. Когда я, например, введите s, p или m для подкатегории. Он печатает все для этого подкласса, когда мне нужна только одна подкатегория для печати.Как напечатать определенную категорию в наследовании с помощью функции instanceof?

Данные примера будут ниже.

1000,S,The Newest Star,Space,51:20,T2.mp3 
1001,P,Interview With George,Politics,15:00,george.mp3 
1002,P,Crooks in Politics,Politics,21:35,crooks.mp3 
1010,M,Cooking For Vegetarians,Food,5:00,vege2.mp3 
1222,S,Where Is The Sun,Larries,23:33,larscience.mp3 

Но если я выбираю «P» для подкатегории для ток-шоу, он должен печатать только эти два, как показано ниже.

1001,P,Interview With George,Politics,15:00,george.mp3 
1002,P,Crooks in Politics,Politics,21:35,crooks.mp3 

Это часть моего кода

private void searchCategoryToPrint() 
    { 
     String inputCategory = JOptionPane.showInputDialog("Choose from Radio Categories: Talk Show, Song, or Commercial\n" + 
                  "and enter the chosen category"); 
     String subCategory = JOptionPane.showInputDialog("Talk Show: S Science, P Politics, and M Miscellaneous\n"); 
     if("talk show".equalsIgnoreCase(inputCategory)) 
     { 
       for(Radio radioShows : radioList) 
       { 
        if("SPM".contains(subCategory.toUpperCase().substring(0)) && radioShows instanceof TalkShow) 
        { 
         System.out.println(radioShows.formatForFile()); 
        } 
       } 
     } 
+0

Какой у вас код для «Радио»? каковы его области? есть ли способ получить подкатегорию из нее? Затем вы должны изменить свой 'if', чтобы сравнить' subCategory' с 'radioShows.getSubcategory()' или все, что у вас есть. – JChrist

+0

Я попытался сделать это, используя категорию. Хотя это мои поля для радио-класса, и это для радио. Да. Поля: id, category, title, host, playtime и audiofile. –

+0

Я бы сломал if («SPM» ....) в два, если(), пока не понял. Обратное сравнение строк и дайте мне знать – efekctive

ответ

1

Вы должны изменить if условия, чтобы проверить, если радио-шоу имеет ту же подкатегорию, как один, выбранную из вашего диалога:

if(radioShows.getCategory().equalsIgnoreCase(subCategory.substring(0)) && radioShows instanceof TalkShow) { 
    System.out.println(radioShows.formatForFile()); 
} 
+1

Спасибо за помощь, и это сработало :) –

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