【发布时间】:2014-01-09 17:34:00
【问题描述】:
我正在使用 Java 逐行读取文件并解析每行中的数据以生成报告。定期会有一个 URL 写入一行,我想绕过该行。我需要设置一个if...then 来测试URL 的存在——在这种特定情况下,我将其定义为http 行的前四个字节。如果条件为真,则读取文件中的下一行,但如果条件为假,则将当前行发送到解析器以进行报告输出。
很简单,不是吗?我遇到了无法让我的if..then 语句准确识别true 条件的问题。我唯一的线索是,当我的inputString 与测试值等于 时,它会以true 的形式通过。除此之外......我无法发现任何不寻常的地方。
public class testClass
{
public static void main(String args[])
{
String inputString1 = "http://www.google.com/r";
String inputString2 = "google";
String inputString3 = "google search";
String inputString4 = "http";
parseInput(inputString1);
parseInput(inputString2);
parseInput(inputString3);
parseInput(inputString4);
}
//
private static void parseInput(String inputString8) {
int httpFlag;
if (inputString8.substring(0,4) == "http")
{ httpFlag = 1467; } else
{ httpFlag = 10644; }
System.out.println(inputString8+" "+inputString8.toLowerCase().substring(0,4)+" "+httpFlag);
}
}
这是我的输出:
http://www.google.com/r http 10644
google goog 10644
google search goog 10644
http http 1467
我期待1467 用于inputString1 和inputString4。
控制台 出现 可以正确显示我的输入和子字符串,Java 文档中没有任何内容表明我的子字符串将是 char 数组或字符串以外的任何内容,所以我不知道为什么http 因为 4 字节字符串的前四个字节与 (4+x) 字节字符串的前四个字节“不同”。我错过了什么?
【问题讨论】:
-
比较
String使用equals方法。 -
如果每次有人在这个网站上用错误的方式比较字符串时我都得到一个镍币,那么你知道它是怎么回事。
-
应该有专门的原因。
-
@SotiriosDelimanolis 不,字面意思是“关闭,因为这不是你在 Java 中比较字符串的方式”;)
标签: java if-statement substring