import java.util.Scanner;
public class TestArray {
public static void main(String[] args) {
String n[]=new String[50];
n[0]="张三";
n[1]="李四";
n[2]="王五";
Scanner input=new Scanner(System.in);
System.out.println("请输入您的姓名:");
String name=input.next();
for(int i=0;i<n.length;i++){
if(n[i]==null){
n[i]=name;
System.out.println("添加成功"); //①
break; //②
}
//①和②放在此处时出现警告"dead code",警告位置是for循环里的i++,
//而且下面遍历数组非空元素的时候,应该插入的元素没能成功加入。请教这2处的区别,因为我看起来好像作用一样。。
}
for(String v:n){
if(v==null)
break;
System.out.println(v);
}
}
}
------最佳解决方案--------------------------------------------------------
//①和②放在此处时出现警告"dead code",警告位置是for循环里的i++
—— 你放这里相当于 break; 是循环中必然会被执行的语句(无视if条件),而且第一次循环就会执行,当然i++毫无意义。
是没排版的原因,还是你真的看不出区别么?
◎只有if成立才会执行①和②;
if(n[i]==null){
n[i]=name;
System.out.println("添加成功"); //①
break; //②
}
◎无论if是否成立,只要if语句块执行完毕,就会继续执行①和②
if(n[i]==null){
n[i]=name;
}
System.out.println("添加成功"); //①
break; //②
------其他解决方案--------------------------------------------------------
我在linux下的命令窗口运行没有错误,也没有警告:
运行结果:
zhaoming@ubuntu:~/workspace/exercise$ javac TestArray.java
zhaoming@ubuntu:~/workspace/exercise$ java TestArray
请输入您的姓名:
123
添加成功
张三
李四
王五
123
------其他解决方案--------------------------------------------------------
谢谢。我不知道怎么了,居然会卡在这里,我明白你说的。哎……