我有一项任务,我必须附上这些字母" un"对于用户输入的任何单词(除非输入的单词已经有" un"在它前面,在这种情况下我只返回输入的单词)。我正在测试我的方法但我遇到了一个问题:如果我要测试空输入,我的程序会一直返回错误。这是我的代码:
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter: ");
String input = keyboard.nextLine();
if(input.substring(0,2).equalsIgnoreCase("un"))
{
System.out.println(input);
}
else if(input.equals(""))
{
System.out.println("un");
}
else
{
System.out.println("un" + input);
}
所以我想问一下如何测试一个空的输入/空白字符串,因为很明显,""报价不起作用。
答案 0 :(得分:5)
检查input.equals("")
本身并没有错。问题是,如果input
小于2个字符,则事先进行另一个测试会抛出异常。
有几种方法可以解决这个问题,但我只是简化并使用startsWith
。一个空字符串并不需要它自己的特殊情况 - 只需在它之前拍一下un
,你就会得到un
:
if (input.toLowerCase().startsWith("un")) {
System.out.println(input);
} else {
System.out.println("un" + input);
}
答案 1 :(得分:4)
您遇到此问题是因为您正在尝试获取不具有所需长度的字符串子字符串。先把空字符串检查。
if(input.equals("")||input.length==1)
{
System.out.println("un");
}
else if(input.substring(0,2).equalsIgnoreCase("un"))
{
System.out.println(input);
}
else
{
System.out.println("un" + input);
}
答案 2 :(得分:2)
如果这不是作业,并且图书馆可以用于其他事情(在这个单一目的中使用它可能有点过分),你可以使用StringUtils.PrependIfMissing()。
它正是这样做并且也处理空值。