2015-11-09 2 views
-4

Я новичок в Java, и я пытаюсь изучить разные сайты и видеоролики, и я застрял на проблеме уже пару дней, и я интересно, может ли кто-нибудь помочь. То, что я пытаюсь сделать, - спросить у пользователя, сколько ключевых актеров в фильме. Затем я хочу спросить имя актера и роль, которую они играют в фильме, это нужно спросить у каждого актера, сколько бы ни было указано пользователем в фильме, прежде чем окончательно отобразить имя актера и его роль?Подсчет актеров и их отображение и отображение их имени и роли

import java.util.Scanner; 

public class rough { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 


     int actorCount; 

     Scanner input = new Scanner(System.in); 
     Scanner kb = new Scanner(System.in); 


     System.out.println("How many actors are in the film? "); 
     actorCount = kb.nextInt(); 


     for (int k = 1; k <= actorCount ; k++) 
     { 
      float actor, character; 
      System.out.println("What is the actors name? "); 
      actor = kb.nextFloat(); 

      System.out.println("What is " + actor + "'s character?"); 
      character = kb.nextFloat(); 


      System.out.print(actor + " - " + character); 

     } 

     kb.close(); 
     input.close(); 
    } 

} 
+1

Есть ли какая-либо конкретная причина, по которой вы используете 'float' для текстовых значений вместо' String'? Я думаю, вы должны взглянуть на ** [это] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) ** и ** [это] (https: // docs .oracle.com/javase/tutorial/java/data/strings.html) ** –

+0

Актер 25.42 потрясающий. – GriffeyDog

ответ

0

Я действительно только намеревался комментировать, а не отвечая на ваш вопрос, потому что я не вижу вопрос, но я не хватает репутации комментировать на свой пост.

Так что я предполагаю, что ваша проблема в том, что вы пытались ввести имя человека, которое является строкой, и вы получаете InputMismatchException.

  1. Вам не нужны два сканера объекты
  2. Читают текст с помощью строки не плавала, поэтому я предлагаю вам изменить

поплавка актера, характер; для струнного актера, персонажа;

также изменение актер = kb.nextFloat(); to actor = kb.nextLine(); и изменить character = kb.nextFloat(); to character = kb.nextLine();

0

Таким образом, вы должны сделать это таким образом:

public static void main(String[] args) { 
    int actorCount; 

    Scanner input = new Scanner(System.in); 
    Scanner kb = new Scanner(System.in); 


    System.out.println("How many actors are in the film? "); 
    actorCount = kb.nextInt(); 

    String[][] actorValues = new String[actorCount][2]; 

    for (int k = 0; k < actorCount ; k++) 
    { 
     String actor, character; 
     System.out.println("What is the actors name? "); 
     actor = kb.next(); 

     System.out.println("What is " + actor + "'s character?"); 
     character = kb.next(); 


     System.out.print(actor + " - " + character +"\n"); 
     actorValues[k][0] = actor; 
     actorValues[k][1] = character; 

    } 


    //Printout the Characters in the List 
    System.out.println("All Actors:"); 
    for (int i = 0; i < actorValues.length; i++) { 
     String[] strings = actorValues[i]; 
     System.out.println("Actorssname: "+strings[0]+" Character:"+strings[1]); 

    } 

    kb.close(); 
    input.close(); 
} 
+0

Это сработает для вас - вам нужно изменить метод «nextFloat()» на «next()». Это позволяет вам читать строку. –

3

Это то, что я сделал бы:

import javax.swing.*; 

public class rough { 

    public static void main(String[] args) { 
    // TODO Auto-generated method stub 


    int actorCount; 
    String output = ""; 

    actorCount = Integer.parseInt(JOptionPane.showInputDialog(null,"How many actors are in the film? ")); 

    for (int k = 1; k <= actorCount ; k++) 
    { 
     String actor, character; 
     actor = JOptionPane.showInputDialog(null, "What is the actors name?"); 
     character = JOptionPane.showInputDialog(null, "What is " +actor + "s character?"); 


     output += actor + " - " + character + "\n"; 
    } 

    JOptionPane.showMessageDialog(null, output); 
    } 
} 

Помните, что если вы хотите все роли/актеров, которые будут напечатаны в в то же время вы должны поместить печать вне цикла for и сохранить роли/актеры в какой-то выходной строке. Более того, я не понимаю, почему вы использовали переменную float для ролей/актеров, которая была бы наиболее логичной для String.