【问题标题】:Displaying values contained in an array显示包含在数组中的值
【发布时间】:2015-10-23 04:33:46
【问题描述】:

我想显示一条消息,指示输入 value 是否存在于我的 rollValue 数组中。

我的代码无法正确识别这些数字。这个search方法是我尝试过的,但是为什么没有显示正确的信息呢?

public void search(int value)
{
    for (int i = 0; i < rollValue.length; i++)
    {
        if (rollValue[i] == value)
        {        
            System.out.println(value + " was found");
        }            
        else
        {
            System.out.println(value + " was not found");
        }
        break;
    }
}

【问题讨论】:

    标签: java arrays printing


    【解决方案1】:

    您需要(可能)迭代每个值,然后才能确定是否找到它。做两种方法。类似的东西

    private boolean hasValue(int value) {
        for (int roll : rollValue) {
            if (value == roll) {
                return true;
            }
        }
        return false;
    }
    

    那么就可以通过调用hasValuelike来实现search

    public void search(int value)
    {
        if (hasValue(value)) 
        {        
            System.out.println(value + " was found");
        }
        else
        {
            System.out.println(value + " was not found");
        }
    }
    

    单行ternarylike

    System.out.println(value + (hasValue(value) ? " was found" : " was not found"));
    

    您可以在search 中添加短路return 并执行类似的操作

    public void search(int value) {
        for (int roll : rollValue) {
            if (roll == value) {
                System.out.printf("%d was found%n", value);
                return;
            }
        }
        System.out.printf("%d was not found%n", value);
    }
    

    【讨论】:

      【解决方案2】:

      您的for 循环在第一次迭代后中断。将break移动到用于查找值的if内,可能是这样的:

      for (int i = 0; i < rollValue.length; i++)
              {
                  if (rollValue[i] == value)
                  {        
                      System.out.println(value + " was found");
                     break;
      
                  }
      
                  else
                  {
                      System.out.println(value + " was not found");
                  }
              }
      

      此外,您可能不需要一直打印“未找到”字符串,因此请将其拿走。

      【讨论】:

      • 这就是该代码正在发生的事情。 3 已找到 2 未找到 2 未找到 2 未找到 2 未找到 2 已找到
      • @MaxLawrence 我知道这个问题来了 ;-) 只需使用默认值为 false 的布尔标志。如果找到项目,则在中断循环之前设置标志。在循环外,检查标志并相应打印。
      • 布尔值会在 for 循环内吗?
      • @MaxLawrence 如果我告诉你你将无法学习的一切。所以给它合乎逻辑的尝试。你越挣扎,你就越能记住东西。祝你好运!
      猜你喜欢
      • 2012-12-05
      • 1970-01-01
      • 2021-08-10
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 2018-06-01
      • 2015-03-27
      相关资源
      最近更新 更多