Java if语句中的问题

Java if语句中的问题,java,if-statement,logical-operators,randomaccessfile,Java,If Statement,Logical Operators,Randomaccessfile,我有一些麻烦,使条件与或。 看看我的问题。如果我这样做,它的工作: System.out.println(p_fileAccess.readLine().trim().startsWith("^ Item Type")); //这是真的但如果我这么做 System.out.println("data :"+(p_fileAccess.readLine().trim().startsWith("* Item Type")||p_fileAccess.readLine().trim().star

我有一些麻烦,使条件与或。 看看我的问题。如果我这样做,它的工作:

System.out.println(p_fileAccess.readLine().trim().startsWith("^ Item Type")); 
//这是真的但如果我这么做

System.out.println("data :"+(p_fileAccess.readLine().trim().startsWith("* Item Type")||p_fileAccess.readLine().trim().startsWith("^ Item Type ")));
这是假的
你能帮我吗?

第一个条件读第1行,第二个条件读第2行

试试这个:

String line = p_fileAccess.readLine().trim();
System.out.println("data:" + (line.startsWith("* Item Type") || line.startsWith("^ Item Type ")));

第一个条件读取第1行,第二部分再次读取(第2行)

试试这个:

String line = p_fileAccess.readLine().trim();
System.out.println("data:" + (line.startsWith("* Item Type") || line.startsWith("^ Item Type ")));


假设p_fileAccess是一个缓冲读取器或类似的读取器,那么第二行代码将查看文件中的两行不同的代码。第一个不以“*项目类型”开头,第二个不以“^Item类型”开头

假设p_fileAccess是一个缓冲读取器或类似的读取器,那么第二行代码将查看文件中的两行不同的代码。第一个不以“*项目类型”开头,第二个不以“^Item类型”开头

startsWith(“^Item Type”)
中有一个空格,我假设
p\u fileAccess.readLine().trim().startsWith(“^Item Type”)
返回一个字符串,否则您将无法将其与另一个字符串连接。因此,您正在应用或到字符串,这是完全错误的。这是相同的问题p_fileAccess.readLine().trim().StartWith(“^Item Type”)不返回布尔值?在
StartWith(“^Item Type”)
中有一个空格,我假设
p_fileAccess.readLine().trim().StartWith(“^Item Type”)
返回一个字符串,否则您将无法将其与另一个字符串连接。因此,您正在应用或到字符串,这是完全错误的。这是同样的问题。readLine().trim().startsWith(“^Item Type”)不返回布尔值?正如我在给OP的注释中所写的那样:
startsWith(“^Item Type”)
中有一个空格,因此第二部分永远不会是
真的
(由于
trim
)你是真实的god@StefanWarminski,文件的格式可以是^Item Type type1^ Item Type type2*Item Type type3,这样就可以了。问题在于比较不同的线条。@BorLaze好的,明白了。但如果
为“^Item Type”,则仍将返回
false
。OP的第一个语句将返回
true
,而您的解决方案不会返回。@StefanWarminski,我想您会认为,.startFrom()使用regex,比如.replaceAll()。不,它使用纯字符串(不将其视为正则表达式)。正如我在给OP的评论中所写的那样:
startsWith(“^Item Type”)
中有一个空格,因此第二部分永远不会是
真的
(由于
trim
),你才是真的god@StefanWarminski,文件的格式可以是^Item Type type1^ Item Type type2*Item Type type3,这样就可以了。问题在于比较不同的线条。@BorLaze好的,明白了。但如果
为“^Item Type”,则仍将返回
false
。OP的第一个语句将返回
true
,而您的解决方案不会返回。@StefanWarminski,我想您会认为,.startFrom()使用regex,比如.replaceAll()。不,它使用纯字符串(不将其视为正则表达式)。