在尝试按字母顺序排序数组失败后,我意识到我的失败很可能是因为我的一个String数组值为null。我试过了Arrays.sort()& compareTo(),很像这个用户: How to sort a String array alphabetically (without using compareTo or Arrays.sort)
...具有相同的结果,很可能指向我的一个值为null。如何判断我的某个值是否为空?有测试吗?怎么会变成空?最重要的是,这是否是正确的问题?感谢。
String[] titleChoice = new String[5];
String title = "", titleString = "";
String[] authorChoice = new String[5];
String author = "", authorString = "";
int[] pageChoice = new int[5];
String page = "", pageInt = "";
String currentTitle;
String currentPage = "";
String formatEntry;
int x = 0;
int numEntered;
int highestTitle = titleChoice.length - 1;
int highestAuthor = authorChoice.length - 1;
int highestPage = pageChoice.length - 1;
final int MAX_ARRAY_SIZE = 5;
boolean notQuit = true;
Arrays.fill(titleChoice, "zzzzzzzzzzz");
Arrays.fill(authorChoice, "zzzzzzzzzzz");
Arrays.fill(pageChoice, 99999999);
Scanner input = new Scanner(System.in);
do
{
System.out.print("Enter the title of a book, or zzz to quit:");
titleChoice[x] = input.next();
if(!titleChoice.equals("zzz"))
{
LibraryBook inputBook = new LibraryBook();
inputBook.setBook(titleChoice[x]);
LibraryBook inputAuthor = new LibraryBook();
System.out.print("Please enter " + titleChoice[x] + "'s author's last name: ");
authorChoice[x] = input.next();
inputAuthor.setAuthor(authorChoice[x]);
LibraryBook inputPages = new LibraryBook();
System.out.println("Please enter " + titleChoice[x] + "'s page count: ");
pageChoice[x] = input.nextInt();
inputPages.setPages(pageChoice[x]);
x = x + 1;
}
else
System.out.println("You have elected to quit the program. Goodbye.");
}
while(((!titleChoice.equals("zzz")) && x < 5) && ((!authorChoice.equals("zzz")) && x < 5)
&& ((!pageChoice.equals("zzz")) && x < 5));
//I just put this in here to see if it would compile
Arrays.sort(titleChoice[x]); }}
答案 0 :(得分:2)
如何判断我的某个值是否为空?
一种方法是学习读取你正在获得的堆栈跟踪。 (如果你向我们展示,我们可能会帮助你。)
另一种方法是测试值以查看它是否为空。
有测试吗?
以下是测试简单变量的方法。
if (a == null) {
System.out.println("a is null");
}
如果你有一个元素可能是null
的数组,写一个循环来测试它们。 (有更优雅的方式......但如果你正在学习,请保持简单。)
它是如何变为空的?
这两种方式是:
null
。null
,您尚未为其分配非空值。例如,new String[5];
创建一个新的String数组,其值最初为null
。最重要的是,这是否是正确的问题?
我们无法告诉您&#34;正确&#34;问题是,因为这取决于你的精神状态......我们无法读懂你的想法。