我试图在将每个空格,句号,感叹号和感叹号放入数组的过程中保留空格,句号,逗号,感叹号和新行。除了空白区域以外,其他所有工作都很好。
Scanner fileInput = new Scanner(file);
while (fileInput.hasNext())
{
String s = fileInput.next();
if(s.endsWith(",") || s.endsWith(".") || s.endsWith("!")|| s.endsWith("\n") || s.endsWith(","))
{
String token = new String("");
token += s.charAt(s.length()-1);
s = s.substring(0, s.length()-1);
words.add(s.toLowerCase());
words.add(token);
}
else if (!s.equals("") )
words.add(s.toLowerCase());
}
}
答案 0 :(得分:1)
next()
读取输入,直到空格出现,不包括space.So为空白,您的代码不能作为空白,实际上并不存在,而且您可以使用charAt
获取最后一个字符并使用{{ 1}}而不是switch
。
您应该使用||
来获取所有令牌(也由nextLine()
建议),包括中间的空格以便您自信。
答案 1 :(得分:0)
扫描仪可以返回空格。您只需要使用分隔符 1 。请尝试以下方法。
Scanner fileInput = new Scanner(file);
fileInput.useDelimiter("(?<=(\\s++))");
while (fileInput.hasNext())
当然,你需要添加一些条件来查看字符串是否以空格或换行符结尾。
<子> 备注强> 子>
1 关键是要找到符合要求的好分隔符。
答案 2 :(得分:-1)
只需在("")
(" ")
之间留出一些空格,并使用nextLine()
进行输入,请参阅以下代码
public class MyClass{
public static void main(String args[])
{
if("".equals(" ")) //THIS BLOCK WILL NOT RUN
{
System.out.println("same");
}
else{ //ELSE PART WILL BE EXECUTED
System.out.println("NOT SAME");
}
}
}
输出:不相同
空格是一个带有ascii代码32的字符文字。