请问助教代码哪里有错,运行总是出错

请问助教代码哪里有错,运行总是出错

package zuoye;

import java.util.Scanner;

public class Homework {
	//输入数据
public int[] insertData(){
	int[] a=new int[8];
	for(int b=0;b<9;b++){
		System.out.println("请输入第"+(b+1)+"个数据");
		Scanner in=new Scanner(System.in);
		a[b]=in.nextInt();
	}
	return a;
}
   //显示数据
public void showData(int[] a){
	System.out.println("数组元素为:");
	for(int lengt=0;lengt<a.length;lengt++){
		System.out.print(a[lengt]+"   ");
	}
}
    //插入数据
public void insertAtArrav(int[] a,int n,int k){
	Scanner insert=new Scanner(System.in);
	System.out.println("请输入要插入的数据:");
	n=insert.nextInt();
	System.out.println("请输入要插入的数据的位置:");
	k=insert.nextInt();
	for(int c=a.length;c>=k;c--){
		a[c]=a[c-1];
	}
	a[k-1]=n;
	Homework hw=new Homework();
	hw.showData(a);
}
    //显示数组中能被3整除的元素
public void divThree(int[] a){
	System.out.println("数组中能被3整除的元素为:");
	for(int d=0;d<a.length;d++){
		if(a[d]/3==0)System.out.print(a[d]+"  ");
	}
}

    //打印主菜单
public void notice(){
	System.out.println("************************");
	System.out.println("    1--插入数据");
	System.out.println("    2--显示所有数据");
	System.out.println("    3--在指定位置处插入数据");
	System.out.println("    4--查询能被3整除的数据");
	System.out.println("    0--退出");
	System.out.println("************************");
	System.out.println("请输入对应的数字进行操作:");
}

    //主方法
public static void main(String[] arg){
	Homework hw=new Homework();
	int i;
	int a[]=null;
	do{
		
		Scanner sc=new Scanner(System.in);
		hw.notice();
		i=sc.nextInt();
		switch(i){
		case 0:
			System.out.println("退出程序");break;
		case 1://调用方法insertData
			hw.insertData();break;
		case 2://调用方法showData
			hw.showData(a);break;
		case 3://调用方法insertAtArrav
			int n=0,k=0;
			hw.insertAtArrav(a,n,k);break;
		case 4://调用方法divThree
			hw.divThree(a);break;
		default:
			System.out.println("输入有误,请根据提示进行输入");break;
		}
	}while(i!=0);
}
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
姜饼 2017-03-19 21:55:47

您好, 首先在main方法中,您的代码 :    int a[]=null;在这您给数组a赋了空值,那么在你输入2,3,4等操作的情况下 数组为空 ,所以为报NullPointerEcxeption的异常,俗称空指针。

只有在输入1,执行数据操作的时候才不会报错,因为:在insertData的方法中,int[] a=new int[8];您又创建了一个名为a的数组并且实例化了。注意 这里的a数组和你在main方法中的a数组并不是一个。因为作用域不同。该题目所有的功能应该是对应一个数组做操作,也就是说只能有int[] a一个a名称的数组,建议您好好看一下题目需求。

提问者 慕粉1728086137 2017-03-19 17:42:25

http://img1.sycdn.imooc.com/climg//58ce523600011caa04300099.jpg不管运行1,2,3,4都是这样的错误。

没有马甲线的安琪拉 2017-03-19 16:06:35

错误信息有截图吗?

  • 提问者 慕粉1728086137 #1
    截图发出来了
    2017-03-19 17:42:49
  • 提问者 慕粉1728086137 #2
    我试了试写了一些简单的输入输出语句,都没有报错。应该不是配置的问题吧
    2017-03-19 17:45:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师