Java 数组中的元素定位问题

Java 数组中的元素定位问题,java,Java,我的代码是假设从用户那里获取行和列的输入,让他们输入数组的值,然后对数组进行排序,找到最大的值,然后让它显示最高元素的位置,我只是不确定哪里出错了 当您点击location()中的if块时,会发生错误,这是由计数器变量引起的 i从1开始,而不是Java数组的第一个索引0-因此,当每次内部循环运行时递增时,当它位于最后一个元素时,它会离开数组的末尾 请记住,java是零索引的,这意味着大小为n的数组的第一个元素为0,最后一个元素为n-1。因此,如果您的数组有5个元素,那么数组[5]将导致一个错误,

我的代码是假设从用户那里获取行和列的输入,让他们输入数组的值,然后对数组进行排序,找到最大的值,然后让它显示最高元素的位置,我只是不确定哪里出错了


当您点击location()中的if块时,会发生错误,这是由计数器变量引起的

i
从1开始,而不是Java数组的第一个索引0-因此,当每次内部循环运行时递增时,当它位于最后一个元素时,它会离开数组的末尾

请记住,java是零索引的,这意味着大小为n的数组的第一个元素为0,最后一个元素为n-1。因此,如果您的数组有5个元素,那么数组[5]将导致一个错误,因为它实际上是数组中的第六个(并且不存在)元素

但是,在进行此更改后,它仍然会崩溃。这是因为在外循环中,
i
永远不会重置。假设要遍历2x2数组-
i
从0开始,然后在遍历第一行时递增两倍<代码>i现在为2,但外部循环再次运行!程序尝试访问[1][2],但失败

除此之外,您还有其他几个问题。此时,
location()
成功返回2D数组中的最大值。然后尝试使用
indexOf()
方法查找原始数组中的数字索引。但是,当您从2D数组创建列表时,您得到的是1D数组的列表。试图在数组列表中查找数字的索引没有意义,因此,
indexOf()
返回-1

这就像在一个字符串数组中询问5的索引是什么。完全不同的数据类型

(另外,将索引存储在double中是一种不好的做法,因为使用非整数索引值实际上没有意义)

如果您只想找到数组中最大项的位置,我建议让
location()
返回一个包含两个元素的1D数组:行和列。只要找到一个新的最大元素,就可以保存row和col的值,这样在完成后就可以很容易地返回它们


祝你好运

当您点击location()中的if块时会发生错误,并且是由计数器变量引起的

i
从1开始,而不是Java数组的第一个索引0-因此,当每次内部循环运行时递增时,当它位于最后一个元素时,它会离开数组的末尾

请记住,java是零索引的,这意味着大小为n的数组的第一个元素为0,最后一个元素为n-1。因此,如果您的数组有5个元素,那么数组[5]将导致一个错误,因为它实际上是数组中的第六个(并且不存在)元素

但是,在进行此更改后,它仍然会崩溃。这是因为在外循环中,
i
永远不会重置。假设要遍历2x2数组-
i
从0开始,然后在遍历第一行时递增两倍<代码>i现在为2,但外部循环再次运行!程序尝试访问[1][2],但失败

除此之外,您还有其他几个问题。此时,
location()
成功返回2D数组中的最大值。然后尝试使用
indexOf()
方法查找原始数组中的数字索引。但是,当您从2D数组创建列表时,您得到的是1D数组的列表。试图在数组列表中查找数字的索引没有意义,因此,
indexOf()
返回-1

这就像在一个字符串数组中询问5的索引是什么。完全不同的数据类型

(另外,将索引存储在double中是一种不好的做法,因为使用非整数索引值实际上没有意义)

如果您只想找到数组中最大项的位置,我建议让
location()
返回一个包含两个元素的1D数组:行和列。只要找到一个新的最大元素,就可以保存row和col的值,这样在完成后就可以很容易地返回它们


祝你好运

您遇到了什么问题?1)是否尝试在此代码上使用调试器?2) 如果你想让我们帮忙,你需要给我们一些线索;e、 g.为什么您认为某件事出错,任何错误消息/堆栈跟踪等。
如果(a[row][col]
为什么不与
maxValue
进行比较?您的数组没有排序,因此上面的If可能会覆盖真正的最大值。esorry我收到错误消息“java.lang.ArrayIndexOutOfBoundsException:1”。您应该在回答中添加整个堆栈跟踪,以便我们可以看到行号。另外,添加触发错误的示例输入。您遇到了什么问题?1)您是否尝试在此代码上使用调试器?2) 如果你想让我们帮忙,你需要给我们一些线索;e、 g.为什么您认为某件事出错,任何错误消息/堆栈跟踪等。
如果(a[row][col]
为什么不与
maxValue
进行比较?您的数组没有排序,因此上面的If可能会覆盖真正的最大值。esorry我收到错误消息“java.lang.ArrayIndexOutOfBoundsException:1”。您应该在回答中添加整个堆栈跟踪,以便我们可以看到行号。另外,添加触发错误的示例输入。非常感谢,这非常有帮助。没问题!如果你认为一切都解决了,一定要把它标为答案。谢谢你,这帮了大忙。没问题!如果你认为一切都解决了,一定要把它标为答案