【问题标题】:Integers converted to strings do not work as expected转换为字符串的整数不能按预期工作
【发布时间】:2020-11-02 08:48:44
【问题描述】:

将 str() 与我期望的字符串形式进行比较的问题

代码:

int i = 2;
String r = str(i);
println(r);
if (r == "2") {
  println("String works");
} else println("String doesnt work");
if (i == 2) {
  println("Integer works");
} else println("Integer doesnt work");

打印:

2
字符串不起作用
整数工作

第二个 if 语句是第一个的复制粘贴,只更改了变量和值,所以我的 if 语句没有任何问题

处理文档状态(关于 str()):

将原始数据类型(boolean、byte、char、int 或 float)的值转换为其 String 表示。例如,用 str(3) 转换整数将返回“3”的字符串值, 用 str(-12.6) 转换浮点数将返回“-12.6”,用 str(true) 转换布尔值将 返回“真”。

也不适用于 str(2) == "2" 或 str(i) == "2"

如何解决这个问题并让它工作(不将其转换回整数,因为这会使我的代码有点难看)

【问题讨论】:

标签: processing


【解决方案1】:

您不应使用== 比较String 的值。请改用equals() 函数:

if (r.equals("2")) {

来自the reference

要比较两个字符串的内容,请使用equals() 方法,如if (a.equals(b)),而不是if (a == b)。字符串是一个对象,因此将它们与 == 运算符进行比较仅比较两个字符串是否存储在相同的内存位置。使用equals() 方法将确保比较实际内容。 (troubleshooting 参考有更长的解释。)

更多信息在这里:How do I compare strings in Java?

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 2012-01-19
    • 1970-01-01
    • 2012-10-31
    • 2018-01-18
    • 2011-05-17
    • 2021-10-19
    • 1970-01-01
    • 2015-02-22
    相关资源
    最近更新 更多