JAVA这样报错:Exception in thread "main" java.lang.NullPointerException,求助是什么问题
代码等下补上,先上题目:(1)创建MaxArray类:声明1个一维数组的成员变量,例如:intarray[];//一维数组设置有参构造方法...
代码等下补上,先上题目:(1)创建MaxArray类: 声明1个一维数组的成员变量,例如:int array[ ]; //一维数组 设置有参构造方法,如:MaxArray(int n){ …… } //有参构造方法,为成员变量创建长为n的一维数组 设置无参构造方法:通过键盘输入数组长度n,然后为成员变量创建长度为n的数组。 设置修改数组元素值的成员方法:int setArray(){ …//输入数组各元素的值 } 设置查找并返回数组最大值的成员方法:int findMax( ){……} 设置输出数组所有元素的成员方法:void output( ){……}(2)创建主类CreateArray:生成MaxArray类对象,并调用相关成员方法求数组最大值,并输出。然后,无论是调用有参构造方法还是调用无参构造方法都爆出这样的错误,但是我找不出问题
补充问题:(1)创建MaxArray类:声明1个一维数组的成员变量,例如:int array[ ]; //一维数组l 设置有参构造方法,如:MaxArray(int n){ …… } //有参构造方法,为成员变量创建长为n的一维数组l 设置无参构造方法:通过键盘输入数组长度n,然后为成员变量创建长度为n的数组。l 设置修改数组元素值的成员方法:int setArray(){ …//输入数组各元素的值 }设置查找并返回数组最大值的成员方法:int findMax( ){……}设置输出数组所有元素的成员方法:void output( ){……}(2)创建主类CreateArray:生成MaxArray类对象,并调用相关成员方法求数组最大值,并输出。
代码太长补充不了,我补图上来: 展开
补充问题:(1)创建MaxArray类:声明1个一维数组的成员变量,例如:int array[ ]; //一维数组l 设置有参构造方法,如:MaxArray(int n){ …… } //有参构造方法,为成员变量创建长为n的一维数组l 设置无参构造方法:通过键盘输入数组长度n,然后为成员变量创建长度为n的数组。l 设置修改数组元素值的成员方法:int setArray(){ …//输入数组各元素的值 }设置查找并返回数组最大值的成员方法:int findMax( ){……}设置输出数组所有元素的成员方法:void output( ){……}(2)创建主类CreateArray:生成MaxArray类对象,并调用相关成员方法求数组最大值,并输出。
代码太长补充不了,我补图上来: 展开
1个回答
展开全部
import java.util.Arrays;
import java.util.Scanner;
class MaxArray
{
int array[];
private MaxArray()
{}
public MaxArray(int n)
{
array = new int[n];
}
public void setArray(int[] array)
{
this.array = array;
}
int findMax()
{
int max = Integer.MIN_VALUE;
for(int i = 0; i < array.length; i++)
{
int ai = array[i];
if(max < ai)
{
max = ai;
}
}
return max;
}
void output()
{
System.out.println(String.format("MaxArray [array=%s]", Arrays.toString(array)));
}
}
public class CreateArray
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int n = -1;
while(true)
{
System.out.print("输入数组长度n: ");
try
{
n = Integer.parseInt(scanner.nextLine().trim());
break;
}
catch(NumberFormatException e)
{
continue;
}
}
MaxArray ma = new MaxArray(n);
int[] arr = new int[n];
for(int i = 0; i < n; i++)
{
System.out.print("输入第" + (i + 1) + "个数: ");
try
{
arr[i] = Integer.parseInt(scanner.nextLine());
}
catch(NumberFormatException e)
{
i--;
continue;
}
}
scanner.close();
ma.setArray(arr);
ma.output();
int max = ma.findMax();
System.out.println(max);
}
}
追问
我知道了,其实可以不用私有的,我错在“int array[]=new int[n];”这里了,应该是把数组首地址赋值给数组引用,改成“array=new int[n];”就可以run了,你改的那里也改到了,哈哈,我提问用的代码还是贴图片出来的,谢谢你这么认真敲完我的代码了,谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询