Java 在数组中寻找最小值

Java 在数组中寻找最小值,java,arrays,Java,Arrays,我正在学习Java,现在正在使用数组。我正在做一个练习,让用户输入2×3整数数组的值。然后我应该找到最小的值。我通过使用if语句来实现这一点。问题是编译器总是打印最小值的数字“0”。我无法找出我的代码有什么问题。有人能帮我吗? 代码如下: import java.util.Scanner; public class Oppgave79k { public static void main(String[] args) { Scanner input = new Scann

我正在学习Java,现在正在使用数组。我正在做一个练习,让用户输入2×3整数数组的值。然后我应该找到最小的值。我通过使用if语句来实现这一点。问题是编译器总是打印最小值的数字“0”。我无法找出我的代码有什么问题。有人能帮我吗? 代码如下:

  import java.util.Scanner;
  public class Oppgave79k 
  {
public static void main(String[] args) 
{
    Scanner input = new Scanner(System.in);
    int t[][] = new int[2][3];
    int smallest = t[0][0];

    for (int row = 0; row < t.length; row++)
        {
        for (int column = 0; column < t[row].length; column++)
            {
            System.out.println("Enter values for array: ");
            t[row][column] = input.nextInt();
            if (t[row][column] < smallest)
                {
                smallest = t[row][column];
                }
            }
        }
    for (int row = 0; row < t.length; row++)
        {
        for (int column = 0; column < t[row].length; column++)
            {
            System.out.printf("%d ", t[row][column]);
            }
        }
    System.out.printf("Smallest element is: %d\n", smallest);
}
import java.util.Scanner;
公开课机会79K
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
int t[][]=新int[2][3];
int=t[0][0];
for(int row=0;row
}

在这些行中:

int t[][] = new int[2][3];
int smallest = t[0][0];
您已开始将
最小的
设置为0。所以除非你输入一个负数,否则它永远不会改变

您可以使用:

int t[][] = new int[2][3];
int smallest = Integer.MAX_VALUE;
以确保使用输入的第一个数字

另外,您的缩进样式有些非传统。或者

for (...) {
    // Code
}

我觉得不错,但是

for (...)
    {
    // Code
    }

非常不寻常。

最小值的初始值为0。如果通过输入在中输入负数,则应获得不同于0的值


如果您正在学习Java或任何其他编程语言,请考虑将最小值设置为第一个输入值。

  • 了解如何调试代码,这将帮助您了解计算机如何“思考”
  • 如果你刚开始,试着不写任何一行代码就解决问题,这将帮助你像“计算机”一样思考

  • 然后你会发现你最初分配的
    最小的
    是错误的。

    我建议你先做输入读取部分并存储2D数组。然后你可以设置最小的=t[0][0]。然后它永远不会崩溃。我还建议你实现一个排序算法,而不是找到一个最小的元素。我可以保证这将是一次很棒的经历。 还可以使用EclipseIDE,这是一个开源IDE。在那里,您可以调试您的观点,这将简化您的编码生活

    为什么不使用并获取排序数组中的第一个元素?@mre:这是O(nlogn)而不是O(n)。它还会修改数组,除非您进行了复制。
    for (...)
        {
        // Code
        }