我正在学习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);
}
}
答案 0 :(得分:8)
在这些方面:
int t[][] = new int[2][3];
int smallest = t[0][0];
你开始,smallest
为0.所以除非你输入一个负数,否则它永远不会改变。
您可以使用:
int t[][] = new int[2][3];
int smallest = Integer.MAX_VALUE;
确保使用输入的第一个号码。
顺便说一下,你的缩进风格有些不同寻常。任
for (...) {
// Code
}
或
for (...)
{
// Code
}
看起来很好,但是
for (...)
{
// Code
}
很不寻常。
答案 1 :(得分:2)
您的初始值smallest
为0.如果您通过输入输入负数,则应获得不同于0的值。
考虑将最小值设置为第一个输入值。
答案 2 :(得分:0)
如果您正在学习Java或任何其他编程语言
然后您会看到smallest
的初始分配错误。
答案 3 :(得分:0)
我建议你先做输入读取部分并存储2D数组。然后你可以设置最小= t [0] [0]。然后它的算法永远不会破坏。而且我建议你为此实现一个排序算法,而不是找到一个最小的元素。我可以保证这将是一次很棒的经历。 并且还使用eclipse IDE,这是一个开源IDE。您可以调试您的观点,它将使您的编码生活变得轻松。