2013-05-03 41 views
0

我的代码工作正常。但是,当我从名称或年龄输入中输入-1时,输出看起来不正确。我如何删除空值和“-1”并显示已存在的数组?如何从两个数组中删除/不显示空值?

import java.util.Scanner; 

public class quizLoop { 
    private static Scanner key = new Scanner(System.in); 
    private static Scanner keyNum = new Scanner(System.in); 

    public final static int arrayLoop = 5; 
    public static String[] nameList = new String[arrayLoop]; 
    public static int[] age = new int[arrayLoop]; 

    public static void main(String[] args) { 
     System.out.println("NAME & AGE SYSTEM\n-----------------\n"); 
     for(int i=0; i<arrayLoop; i++) { 
      System.out.print("Name: "); 
      nameList[i] = key.nextLine(); 
      if(nameList[i].equals("-1")) 
       break; 

      System.out.print("Age: "); 
      age[i] = keyNum.nextInt(); 
      if(age[i] < 0) 
       break; 
     } 

     System.out.println("----------"); 
     for(int i=0; i<nameList.length; i++) { 
      System.out.println(nameList[i] + " " + age[i]); 
     } 
    } 
} 
+0

应该输入'-1'什么? – wchargin 2013-05-03 02:41:02

+0

您的输入和预期输出是什么?你从不提及...... – Drogba 2013-05-03 02:42:03

回答

0

当前,当您输入-1时,循环退出。也就是说,只要输入-1,循环就不会再次运行。这是因为您使用break声明。

如果您想要让-1允许用户再次启动电流输入,你需要做两件事情:

if (nameList[i].equals("-1")) { 
    // Take the loop variable down one. 
    i--; 
    // Instead of break, continue to the next iteration. 
    continue; 
} 

如果你想保持环路是怎么回事,但只有打印null值,修改您的打印代码:

for(int i=0; i<nameList.length; i++) { 
    if (nameList[i] == null || nameList[i].equals("-1") || age[i] < 0) { 
     // Invalid; go to the next one. 
     continue; 
    } else { // (not strictly necessary) 
     System.out.println(nameList[i] + " " + age[i]); 
    } 
} 
+0

完美!谢谢:D – Shuvo0o 2013-05-03 02:56:55

+0

很高兴为您服务!如果它有帮助,请考虑加注这个答案,或者如果它完全解决了您的问题,请点击复选标记以接受它。 – wchargin 2013-05-03 02:58:42

+0

顺便说一句,你可以添加代码按年龄排序,而不使用Arrays.sort? – Shuvo0o 2013-05-03 15:02:41

0

尝试使用列表,而不是一个数组,像这样:

import java.util.Scanner; 

public class quizLoop { 
private static Scanner key = new Scanner(System.in); 
private static Scanner keyNum = new Scanner(System.in); 

public final static int arrayLoop = 5; 
public static List<String> nameList = new ArrayList<String>(); 
public static List<Integer> ages = new ArrayList<Integer>(); 

public static void main(String[] args) { 
    System.out.println("NAME & AGE SYSTEM\n-----------------\n"); 

    while (true){ 
     System.out.print("Name: "); 
     String name = key.nextLine(); 
     if(name.equals("-1")) 
      break; 

     System.out.print("Age: "); 
     Integer age = keyNum.nextInt(); 
     if(age < 0) 
      break; 
     nameList.add(name); 
     ages.add(age); 
    } 

    System.out.println("----------"); 
    for(int i=0; i<nameList.length; i++) { 
     System.out.println(nameList[i] + " " + age[i]); 
    } 
} 
}