Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得2d数组中的总体最大值?_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java 如何获得2d数组中的总体最大值?

Java 如何获得2d数组中的总体最大值?,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我试图让程序获取用户的输入,然后将其放入2d数组中,然后我希望它从所有数字中找到总的最大数字并打印出来。我还不太了解2d阵列,所以我不知道逻辑错误在哪里 这是我的密码: import java.util.Scanner; 公共类ToDoTwo{ 公共静态void main(字符串参数[]){ 整数编号[][]=新整数[3][3],最大值[][]=新整数[3][3],n,临时值; 扫描器obj=新扫描器(System.in); 对于(int i=0;i

我试图让程序获取用户的输入,然后将其放入2d数组中,然后我希望它从所有数字中找到总的最大数字并打印出来。我还不太了解2d阵列,所以我不知道逻辑错误在哪里

这是我的密码:

import java.util.Scanner;
公共类ToDoTwo{
公共静态void main(字符串参数[]){
整数编号[][]=新整数[3][3],最大值[][]=新整数[3][3],n,临时值;
扫描器obj=新扫描器(System.in);
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
System.out.println(“输入一个数字:”);
数字[i][j]=obj.nextInt();
}
}
max[0][0]=数字[0][0];
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
如果(数字[i][j]>max[0][0]){
max[0][0]=数字[i][j];
}
}
}
对于(int i=0;i
您的程序或多或少可以按照您的意愿工作,但肯定可以改进。结果当前仅显示为附加8个零。之所以会出现这种情况,是因为您正在循环使用
max
进行打印,并且实际上只设置了第一个条目

关于如何改进的建议:

  • 使用单个整数(
    int max=0;
    )来存储生成的最大值。此操作不需要数组
  • 不要在同一行上写多个声明,因为在Java中不鼓励这样做,因为这可能会导致bug(难以读取)
  • 为扫描仪实例指定一个有意义的名称(例如,
    Scanner
    ),而不是
    obj
  • 使用
    numbers.length
    numbers[0]。length
    而不是硬编码的数字,以避免以后更改范围时出现问题
  • 使用Java样式的数组声明(
    int[]name
    )而不是C样式的数组声明(
    int-name[]
你的全班同学可以是这样的:

import java.util.Scanner;
公共类ToDoTwo{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int[][]数字=新int[3][3];
for(int i=0;i最大值){
max=数字[i][j];
}
}
}
系统输出打印项次(最大值);
}
}

如果不需要在单独的步骤中计算最大值,您可以将If语句直接放在第一个循环中。

您的程序或多或少可以按照您的需要工作,但肯定可以改进。结果当前仅显示为附加8个零。之所以会出现这种情况,是因为您正在循环使用
max
进行打印,并且实际上只设置了第一个条目

关于如何改进的建议:

  • 使用单个整数(
    int max=0;
    )来存储生成的最大值。此操作不需要数组
  • 不要在同一行上写多个声明,因为在Java中不鼓励这样做,因为这可能会导致bug(难以读取)
  • 为扫描仪实例指定一个有意义的名称(例如,
    Scanner
    ),而不是
    obj
  • 使用
    numbers.length
    numbers[0]。length
    而不是硬编码的数字,以避免以后更改范围时出现问题
  • 使用Java样式的数组声明(
    int[]name
    )而不是C样式的数组声明(
    int-name[]
你的全班同学可以是这样的:

import java.util.Scanner;
公共类ToDoTwo{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int[][]数字=新int[3][3];
for(int i=0;i最大值){
max=数字[i][j];
}
}
}
系统输出打印项次(最大值);
}
}
如果不需要在单独的步骤中计算最大值,则可以将If语句直接放入第一个循环。

import java.util.Scanner;
公共类ToDoTwo{
公共静态void main(字符串参数[]){
整数编号[][]=新整数[3][3],最大值[][]=新整数[3][3],n,临时值;
扫描器obj=新扫描器(System.in);
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
System.out.println(“输入一个数字:”);
数字[i][j]=obj.nextInt();
}
}
int maxVal=-Integer.MIN_值;
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
如果(数字[i][j]>maxVal){
maxVal=数字[i][j];
}
}
}
System.out.println(maxVal);
}
}
导入java.util.Scanner;
公共类ToDoTwo{
公共静态void main(字符串参数[]){
整数编号[][]=新整数[3][3],最大值[][]=新整数[3][3],n,临时值;
扫描器obj=新扫描器(System.in);
对于(int i=0;i<3;i++){