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是 type 的变量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 开始,因此 a 的new String[4]有效索引为 0、1、2 和 3,因此您当前的循环将引发异常 - 并且不清楚它的含义是什么result,因为它总是4 在当前循环结束时。

于 2012-10-23T17:21:11.500 回答
1

因为变量时间是字符串类型的。您需要将其解析为 Integer 才能访问数组的该元素,可能类似于:

filmtime[Integer.parseInt(time)] 

您的错误将得到纠正。

于 2012-10-23T17:25:19.987 回答
0

你有 String [] filmtime = new String [4];

因此,在您的代码中, filmtime [time] : time 应该是 in 类型,即 Array 中的索引。

但是,您的时间变量是字符串类型。

尝试这个:

JOptionPane.showMessageDialog(null,"Screen "+ result +": "+"   "+filmtime [result]);
于 2012-10-23T17:24:17.540 回答
0

您已定义timeString并尝试将 atindex用于数组元素。数组索引是整数值,从0引用数组中的第一个元素开始。

filmtime [time]请在语句中使用正确的索引元素。

我怀疑您想result改用 as 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); 
 }

Judging from your question, I think this is what you meant to do.

And this one should be: `

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