【问题标题】:JAVA trying to find positions of the year. Not Working [duplicate]JAVA 试图寻找年度最佳职位。不工作[重复]
【发布时间】:2017-03-22 11:45:40
【问题描述】:

我有一个小程序,它读取一个 json 文件,它给出了 天气、时间、温度、风等。我需要计算平均值 2009 年到 2015 年的温度。这些年在一个数组中,并且在 长度,大约 60k。我正在尝试编写一个小循环,它将首先 找到 2009 年第一个实例的位置,然后 2009 年的最后一个实例。然后我可以运行我的 平均温度循环,但我遇到了一个问题 下面。

place 将是数组的索引。但是,无论我如何运行我的 代码,它总是等于-1,而不是给我的位置 数组中的索引。 if 语句中的两个参数都是 字符串。

那么我做错了什么?

String twozerozeronine = "2009";
int place = -1;
for (int a = 0; a < years.size(); a++){
    if (years.get(a) == twozerozeronine){
        place = 1; 
        break;
    }
}
System.out.println(place);

【问题讨论】:

  • if (years.get(a) === twozerozeronine) 试试这个。
  • @sanA Java 没有三等号运算符。
  • if (years.get(a) .equals(twozerozeronine))
  • if (years.get(a).equals(twozerozeronine)) 试试这个。感谢@khelwood 的更正
  • 感谢 .equals 的帮助,但后来我们注意到我们的语法中也有一个错误,导致它一团糟!现在解决了。

标签: java arrays json string if-statement


【解决方案1】:
years.get(a) == twozerozeronine

检查运算符左侧的对象和运算符右侧的对象是否完全相同。在您的情况下,它们可能相似,但永远不会完全相同。

您需要检查它们是否相似:

years.get(a).equals(twozerozeronine)

【讨论】:

    【解决方案2】:

    您可以使用equals() 方法来比较字符串的值。

    点赞:if ( years.get( a ).equals( twozerozeronine ) ){

    == 运算符比较对象引用(在您的情况下,两者不相等),而 equals() 方法比较实际的字符串值(在您的情况下,字符串值是“2009”)。

    【讨论】:

    • 请不要草率回滚好的编辑@VNT。
    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 2022-07-19
    • 2015-04-12
    相关资源
    最近更新 更多