0
import javax.swing.JOptionPane;


public class filmboxoffice {

    public static void main (String[] args)
    {
        String [] filmname = new String [4];
        String [] filmtime = new String [4];
        String name;
        String time;
        int result;

        for(int i=1; i<5; i++)
        {
            name = JOptionPane.showInputDialog("What is the film on Screen "+i+" today?");
            result = i;
            time = JOptionPane.showInputDialog("What time does it start?");

        }

        JOptionPane.showMessageDialog(null,"Screen "+ result +": "+"   "+filmtime [time]);

    }
}

エラー スタック:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Type mismatch: cannot convert from String to int

at filmboxoffice.main(filmboxoffice.java:22)
4

5 に答える 5

2

問題は次の式です。

filmtime [time]

filmtime配列であり、配列は常にインデックスによってアクセスされます。これはint. timeは 型の変数なStringので、配列インデックスとして使用できません。

おそらく、あなたはMap<String, String>、またはより良いことにJoda Timeを使用したいMap<LocalTime, Film>ですか?

実際、これをもう一度読むと、実際には次のようなものが必要なようです。

for (int i = 0; i < 4; i++) {
    JOptionPane.showMessageDialog(null,"Screen "+ i +": "+"   "+filmtime[i]);
}

...もちろん、入力した後です。time(現在、ユーザーにプロンプ​​トを表示した後、値を無視しています。)

Java の配列は 0 から始まるため、anew String[4]には 0、1、2、3 の有効なインデックスがあるため、現在のループで例外がスローresultれることに注意してください。 4 現在のループの最後に。

于 2012-10-23T17:21:11.500 に答える
0

timeとして定義し、配列要素Stringにatを使用しようとしています。配列インデックスは、配列の最初の要素を参照するためにindex始まる整数値です。0

filmtime [time]ステートメントで正しいインデックス要素を使用してください。

result代わりにとして使用したいと思いますfilmtime [result]

于 2012-10-23T17:25:40.363 に答える
0
 for(int i=1; i<5; i++)
 {
            name = JOptionPane.showInputDialog("What is the film on Screen "+i+" today?");
            result = i;
            filmname[i-1] = new String(name);
            time = JOptionPane.showInputDialog("What time does it start?");

            filmtime[i-1] = new String(time); 
 }

あなたの質問から判断すると、これがあなたの意図したことだと思います。

そして、これは次のようになります。

for(int i = 0; i < 4; i++){
   JOptionPane.showMessageDialog(null,"Screen "+ (i + 1) +": "+ filmname[i]+ " "+filmtime[i];
}
于 2012-10-23T17:53:34.093 に答える