请大神们帮忙看一下,是否完整,是不是有逻辑错误。谢谢!!!

请大神们帮忙看一下,是否完整,是不是有逻辑错误。谢谢!!!

package come.imooc;

import java.util.Scanner;

public class Manage {
	//case1:插入数据
	public int[] insertData(){
		Scanner sc=new Scanner(System.in);
		int[] arr=new int[10];
		for(int i=0;i<=arr.length-1;i++){
		System.out.println("请输入第"+(i+1)+"个数据");
		int n=sc.nextInt();
		if(n==0) {
			System.out.println("输入的数据不能为零,请重新输入");
			i--;
			continue;
		}
		arr[i]=n;
		}
		return arr;
		
	}
	//case2:显示所有数据
	public void showData(int[] arr,int length) {
		System.out.println("数组的元素为:");
		for(int i=0;i<=arr.length;i++) {
			if(arr[i]!=0){
				System.out.print(arr[i]+" ");
			}
		}System.out.println();
		
	}
	//case3在指定位置插入数据
	public void insertAtArray(int[] arr,int n,int k) {
		Scanner sc1=new Scanner(System.in);
		System.out.println("请输入要插入的数据:");
		n=sc1.nextInt();
		if(n==0) {
			System.out.println("插入的数据不能为0,请重新输入");
		}
		System.out.println("请输入要插入的位置:");
		k=sc1.nextInt();
		for(int i=arr.length-1;i>=k;i--){
			arr[i]=arr[i-1];
			arr[k-1]=n;
		}
		arr[k]=n;
		System.out.println("此时数组arr为:"+arr);
	}
	//case4查询能被3整除的数字
	public void divThree(int[] arr) {
		System.out.println("能被3整除的数字是");
		for(int i=0;i<=arr.length;i++) {
		if(arr[i]!=0&arr[i]%3==0) {
			System.out.print(arr[i]+" ");
		}else {
			System.out.println("没有元素能被3整除");
		}
	}
	}
	//显示菜单
	public void list() {
		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[] args) {
		Manage mymanage=new Manage();
		Scanner sc=new Scanner(System.in);
		boolean flag=true;
		int[] arr=new int[9];
		while(flag){
			mymanage.list();
			int n=sc.nextInt();
		switch(sc.nextInt()) {
		    case 1:
		    arr=mymanage.insertData();break;
			case 2:
			mymanage.showData(arr,arr.length);break;
			case 3:
				int n1=0;
				int k=0;
				mymanage.insertAtArray(arr, n1, k);break;
			case 4:
			mymanage.divThree(arr);break;
			case 0:
				System.out.println("退出程序");
				flag=false;
			default:
				System.out.println("请输入0——4范围内的整数");
			}
		}
	}

}


正在回答

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

2回答

1、insertAtArray()方法里,判断插入数据不能为0,没有起到作用,如果为0,只是输出一条信息,程序还是会顺序执行,这里如果你想阻止0的输入,可以在外面添加个循环,只有输入不为0,跳出循环再执行位置的输入。

2、divThree()方法里,else输出的信息不能放在else中,解决办法:可以定义一个整型变量初始值为0,如果有能被3整除的数据,则变量值加1。然后根据count的值是否为0判断是否有能被3整除的元素。

久诚 2018-04-12 13:10:07

1.    main方法里的

     int n=sc.nextInt();

        switch(sc.nextInt())

这里的功能重复了,建议第二行的直接 switch(n);

2.main方法里的switch结构只执行了一个功能就会程序结束,建议弄个循环结构,套住switch结构

3.作业要求功能1是输入九个不为0的数据,这代码已经10个了。

  • 1和3都没问题,2里main()方法中有while(flag)
    2018-04-12 13:43:06
  • 提问者 旱地章鱼 #2
    非常谢谢!
    2018-04-15 18:19:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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