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);
}
}
}

解决方案 »

  1.   

    //①和②放在此处时出现警告"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;                         //②
      

  2.   

    我在linux下的命令窗口运行没有错误,也没有警告:运行结果:zhaoming@ubuntu:~/workspace/exercise$ javac TestArray.java
    zhaoming@ubuntu:~/workspace/exercise$ java TestArray
    请输入您的姓名:
    123
    添加成功
    张三
    李四
    王五
    123