Java 尝试从数组中获取maxNumber时,无法到达最后一个元素

Java 尝试从数组中获取maxNumber时,无法到达最后一个元素,java,if-statement,for-loop,jbutton,jtextfield,Java,If Statement,For Loop,Jbutton,Jtextfield,我正在尝试使用流程布局设置GUI,其中包括一些JLabels、JTextFields和JButtons。六个JTextField,其中五个由用户输入,输入必须是一个数字,最后一个JTextField根据单击的按钮显示结果。JButtons:平均值、最小值、最大值。目前,当我试图获得最大值时,它会在第四个字段上运行。如果第五个字段的值较高,则不会显示为最高值 我使用了一个for循环,循环遍历包含所有数字的数组。后面是一个if条件,如下所示: if(numbers[i]>maxValue)

我正在尝试使用流程布局设置GUI,其中包括一些JLabelsJTextFieldsJButtons。六个JTextField,其中五个由用户输入,输入必须是一个数字,最后一个JTextField根据单击的按钮显示结果。JButtons:平均值、最小值、最大值。目前,当我试图获得最大值时,它会在第四个字段上运行。如果第五个字段的值较高,则不会显示为最高值

我使用了一个for循环,循环遍历包含所有数字的数组。后面是一个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);
}
public void getMax()
{
双最大值=0;
双数[]={num1,num2,num3,num4,num5};
对于(int i=0;imaxValue)
{
最大值=数字[i];
}
}
textResult=String.valueOf(maxValue);
resultField.setText(textResult);
}
编辑:如下所述,我的问题不在for循环,而是我的parsingNumbers()修复了它,现在它工作得很好。谢谢大家。

它在您的for循环中

 for(int i=0;i<=numbers.length-1;i++)
不会增加I=5

相反,您希望遍历所有的值,因为您不只是比较前四个值,而是比较前五个值

您只需删除
-1。
这样,
i
将通过数组中的所有五个数字递增:

i=0

i=1

i=2

i=3

i=4

i=5
让我知道这是否有效

{Ruchir}

我用值0、1、2、3、4和ist尝试了您的代码,结果与预期的一样。maxValue将设置为4.0。所以,失败似乎在你的应用程序中的其他地方。

我认为@angeloberlin是对的

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

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

或者,如果Java 8不可用:

Collections.max(...)
你的问题是什么?你的代码行得通吗?编译和运行都很好。问题是如果它在第五个字段中,我无法得到显示的最高值。它只会显示在前四个字段中。好吧,你需要向我们展示你是如何使用这个方法的,因为在你展示给我们的代码中没有任何解释。读这篇文章:习惯于在这里发帖。我正在尝试格式化代码,这样我就可以在这里发布它,但它不允许我。向我显示一条文字,上面写着“您的帖子似乎包含未正确格式化为代码的代码…”。我确实从IDE编辑器中复制并粘贴了它。问题出现在我的Parsenumber()上,已修复,现在可以使用了。谢谢。他的循环中的条件是
itry运行它;)<代码>我<代码>用于(int i=0;其中包含了5个介于0和4之间的值,即:0、1、2、3、4。我没有意识到这一点。删除了for循环,而是留下了那行代码。我的问题仍然存在,我无法在最后一个字段中获得最高值。我将发布整个代码,如果有点无序,很抱歉。我将继续在e与此同时。
textResult = String.valueOf(DoubleStream.of(numbers).max().getAsDouble());
Collections.max(...)