因此,我正在编写一个程序,让用户输入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