因此,我正在編寫一個程序,讓用戶輸入1-5名稱和個人的社會安全號碼。輸入以圖形方式獲取,並打印在控制檯中。輸出應該是所有名稱和安全號碼,並且在用戶輸入所有名稱/號碼後打印所有內容。雖然我的代碼(有點)工作,如果我輸入五個名稱/ soc.numbers,它不工作,如果我只輸入1-4名稱。例如,如果我輸入三個人/ soc.number,則輸出如下所示:[[person1,soc1],[person2,soc2],[person3,soc3],[null,null],[null,null]]如何停止在二維數組中打印「空」?
現在我知道什麼是錯的:當數組中沒有值時,它總是會打印出null。但是,我不知道如何解決這個問題。我正在考慮使用2D數組列表,但是我不認爲這是可能的,因爲2D數組必須是[5] [2]數組。任何幫助,將不勝感激!!
package whatever;
import java.util.Arrays;
import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
public class 2Darrays {
public static void main(String[] args) {
String[][] namnAndSoc = new String[5][2];
for (int i = 0; i < 5; i++){
UIManager.put("OptionPane.cancelButtonText", "Print");
String in;
in = JOptionPane.showInputDialog(null, "Give name and social security number");
if(in==null){
break;
}
String[] line = in.split(",");
for (int j = 0; j< 2; j++){
nameAndSoc[i][j] = line[j];
}
}
System.out.println(Arrays.deepToString(nameAndSoc)+"\t");
}
}
在向陣列添加元素的同時進行驗證 – Jobin
只需用循環打印數組,而不是使用'Arrays.deepToString()'打印所有內容。這樣你可以決定你想要打印哪個元素。我建議將這些元素存儲在一個Object中,而不是使用2D數組。 – Paul
如果您完全不輸入任何內容,則此代碼會拋出並顯示NPE – XtremeBaumer