2013-05-03 58 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]); 
    } 
} 
}