你能帮我理解发生了什么吗? 我读了一本书 Core Java。第一个变体来自那里。第二种变体是我尝试编译程序。 我有: Java 版本“1.7.0_21” Java(TM) SE 运行时环境(build 1.7.0_21-b11) Java HotSpot(TM) 64 位服务器 VM(构建 23.21-b01,混合模式)
public class Welcome
{
public static void main(String[] args)
{
String[] greeting = new String[3];
greeting[0] = "Welcome to Core Java";
greeting[1] = "by Cay Horstmann";
greeting[2] = "and Gary Cornell";
for (String g: greeting)
System.out.println(greeting[g]);
}
}
结果:
Welcome.java:16: error: incompatible types
System.out.println(greeting[g]);
^
required: int
found: String
1 error
如果我更改我的代码:
public class Welcome
{
public static void main(String[] args)
{
String[] greeting = new String[3];
greeting[0] = "Welcome to Core Java";
greeting[1] = "by Cay Horstmann";
greeting[2] = "and Gary Cornell";
for (int g: greeting)
System.out.println(greeting[g]);
}
}
结果是:
Welcome.java:15: error: incompatible types
for (int g: greeting)
^
required: int
found: String
1 error
最佳答案
您没有在 enhanced for-loop 中获得 index
.您将获得对正在迭代的容器 中的值的引用。因此,您可以直接打印它。
更改第一个st 代码段中的以下语句:
System.out.println(greeting[g]);
到:
System.out.println(g);
对于您的第 2 个nd 片段,这是:
for (int g: greeting)
完全没有意义。正如我所说,您获得了对 greeting
中元素的引用的副本,并且由于 greeting
中的元素属于 String
类型,因此您的循环变量应该是第一个片段中的 String g
。
关于java - 增强的for语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18045783/