【问题标题】:Trying to get maxNumber out of an array, fails to reach the last element试图从数组中获取 maxNumber,无法到达最后一个元素
【发布时间】:2015-11-22 17:01:52
【问题描述】:

我正在尝试使用 FlowLayout 一些 JLabelsJTextFieldsJButtons 设置 GUI。六个JTextField,其中五个由用户输入,输入必须是数字,最后一个JTextField 显示结果取决于单击哪个按钮。 JButtons:平均值、最小值、最大值。目前,当我尝试获得最大数量时,它会在第四个字段中起作用。如果第五个字段有更高的值,它不会显示为最高值。

我使用了一个循环遍历包含所有数字的数组。后跟一个看起来像这样的 if 条件:

if(numbers[i]>maxValue)

其中 maxValue 设置为零。

public void getMax()
{
    double maxValue=0;
    double numbers[] = {num1,num2,num3,num4,num5};

    for(int i=0;i<=numbers.length-1;i++)
    {
        if(numbers[i]>maxValue)
        {
            maxValue = numbers[i];  
        }
    }
    textResult = String.valueOf(maxValue);
    resultField.setText(textResult);
}

编辑: 如下所述,我的问题不在 for 循环中,而是在我的 parsingNumbers() 中修复了它,现在它可以正常工作了。谢谢大家。

【问题讨论】:

  • 您的问题是什么?你的代码有效吗?
  • 它几乎可以编译和运行。问题是我无法获得最高值来显示它是否在第五个字段中。它只会显示在前四个字段中。
  • 好吧,您需要向我们展示您是如何使用该方法的,因为您向我们展示的代码中没有任何内容可以解释这一点。阅读:stackoverflow.com/help/mcve
  • 习惯在这里发帖。我正在尝试格式化代码,以便我可以将其发布在这里,但它不允许我。显示一条文本,上面写着“您的帖子似乎包含未正确格式化为代码的代码......”。我确实从 IDE 编辑器复制并粘贴了它。
  • 问题在我的 Parsenumber() 处,已修复,现在可以使用。谢谢。

标签: java if-statement for-loop jbutton jtextfield


【解决方案1】:

我用值 0、1、2、3、4 尝试了您的代码,并且 ist 按预期工作。 maxValue 将设置为 4.0。所以失败似乎在你的应用程序的其他地方。

【讨论】:

    【解决方案2】:

    我认为@Angelo Berlin 是对的。

    但是为什么不使用 Java 本身呢?例如:

    textResult = String.valueOf(DoubleStream.of(numbers).max().getAsDouble());

    或者如果 Java 8 不可用:

    Collections.max(...)

    【讨论】:

    • 我不知道这一点。删除了 for 循环,而是留下了那行代码。我的问题仍然存在,我无法在最后一个字段中获得最高值。我将发布整个代码,如果有点杂乱无章,请见谅。同时我会继续检查其余的代码。
    【解决方案3】:

    它在你的 for 循环中。

     for(int i=0;i<=numbers.length-1;i++)
    

    目前,numbers.length5。这是因为您在数组numbers 中有五个值

    但是,您只循环了其中的 4 个数字!

    通过i&lt;=numbers.length-1,您的意思是只循环四个值。相反,您应该使用i&lt;=numbers.length

    i=0
    
    i=1
    
    i=2
    
    i=3
    
    i=4
    

    不会增加 I = 5

    相反,您想要遍历 ALL 的值,因为您不是只是比较前四个值,而是比较前 五个 值。

    您需要做的就是删除-1. 这样,i 将递增数组中的所有五个数字:

    i=0
    
    i=1
    
    i=2
    
    i=3
    
    i=4
    
    i=5
    

    让我知道这是否有效,

    {Ruchir}
    

    【讨论】:

    • 他循环中的条件是i&lt;=numbers.length-1,而不是i&lt;numbers.length-1。实际上,我认为他的代码没有任何问题,并怀疑其他问题。
    • 尝试运行它 ;) i&lt;=numbers.length-1i&lt;numbers.length 是等价的,至少当 iint 时。
    • 如果numbers.length 为5,for(int i=0;i&lt;=numbers.length-1;i++) 将遍历所有5 个值。
    • 0到4之间有5个值,分别为:0、1、2、3、4。
    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2022-09-29
    相关资源
    最近更新 更多