我有一个带分隔符的原始txt文件,用于分隔文本。要接收文本,我使用扫描仪:
int textid = getResources().getIdentifier(word, null, this.getPackageName());
Scanner ch = new Scanner(getResources().openRawResource(textid));
打开的文件正确。当我开始接收信息时,需要阅读它,直到获得“ $”为止。
while (ch.hasNext()) {
str = ch.next();
boolean flag = (str.equals("$"));
while (!(str.equals("$"))) {
str = ch.next();
}
问题在于,当str等于“ $”(通过断点检查)时,标志等于“ false”。但是,如果我初始化String m =“ $”并检查flag = m.equals("$")
标志等于“ true”。还尝试使用str != "$"
,但没有帮助。
我的猜测是Scanner.next()返回了另一种类型,但这似乎很奇怪。
答案 0 :(得分:0)
这可能会对您有所帮助。
第一个next()读取多个字符,直到找到空格。
遍历str中的每个字符以查看其是否为'$'。然后,当您找到它时,做任何您想做的事。
while (ch.hasNext()) {
String str = ch.next();
for(int i = 0; i<str.length(); i++) {
if(str.charAt(i) == '$') {
//do something
}
}
}
答案 1 :(得分:0)
当您的代码读取"$"
时,它将中断内部循环。当它从外循环开始时,您将再次调用ch.next()
,它将覆盖"$"
中的前一个str
。这可能是将flag
设置为false
的原因。仅当它是文件中的第一件事时,它才会检测到"$"
。
此外,您可能想再次在内部循环中检查ch.hasNext()
。