作业题代码求修改

作业题代码求修改

import java.util.Scanner;

public class ShowData {
	
	static ShowData n1=new ShowData();
	static Scanner sc=new Scanner(System.in);
	
	public int[] insertData()//此方法用于插入数据
	{
		System.out.println("请写入数据");
		int[] arr=new int[10];
		for(int i=0;i<arr.length-1;i++)
		{
			System.out.println("请输入第"+(i+1)+"个数");
			arr[i]=sc.nextInt();
		}
		return arr;
	}
	public void showData(int[] a)//此方法用于显示数据
	{
		System.out.println("你输入的数据为:");
		for(int i=0;i<a.length-1;i++)
		{			
			System.out.print(a[i]+"\t");
		}
	}
	public void insertAtArray(int[] a)//此方法用于在指定位置插入数据
	{
		System.out.println("你输入的数据为");
		int n=sc.nextInt();//要插入的数据
		System.out.println("你输入的位置为");
		int k=sc.nextInt();//要插入的位置
		int[] newa=new int[a.length+1];
		if(n!=0)
			{
			for(int i=0;i<a.length;i++)
			{
				newa=a;
			}
			for (int i =newa.length-1;i>=k; i--) //前一位赋值给后一位
			{				
				newa[i]=newa[i-1];
			}
			newa[k-1]=n;//插入数据
		}
		System.out.println("插入后的数组:");

		for (int i = 0; i < newa.length; i++) 
		{
		System.out.print(newa[i]+"\t");
		}
	}
	public void divThree(int[] a)//此方法用于查询能被三整除的数据
	{
		System.out.println("能被3整除的数有:");
		for(int arr:a)//增强性for循环读取a数组中的元素
		{
			if(arr%3==0)
				System.out.print(arr+"\t");
		}
	}
	public static int notic()//显示提示信息
	{
		int a;
		System.out.println();
		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();
		a=sc.nextInt();//用于接收并返回键盘输入的数值
		return a;
	}

	public static void main(String[] args)
	{	
		int[]a=new int[10];
		while(true)
		{
			int input=notic();
			switch(input/1)
			{
				case 1:a=n1.insertData();break;//把insertData方法中的数据保存至a[]数组
				case 2:n1.showData(a);break;//键盘输入值为2时跳转至showData方法
				case 3:n1.insertAtArray(a);break;//基本同上,不再赘述
				case 4:n1.divThree(a);break;//基本同上,不再赘述
				case 0:System.out.println("你已退出本程序");return;
			}
		}
	}

}

目前已知问题:执行第二遍插入数据输入相同位置后插入的数据会到后一位去,并且麻烦老师看看代码哪里还有不足的,谢谢老师

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

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

1回答
好帮手慕阿莹 2018-04-13 13:32:44


你的意思是在执行第二遍在指定位置插入数据方法的时候,第一遍插入的数据会到后边一位么?这个是正常的,因为第一遍插入后,你插入进去的数字已经是数组中的元素了。

1,插入数据的方法,作业中要求插入的数据不能为0,建议定义一个整型数字n,把键盘接收的数字赋值给n,对n进行判断,如果n等于0,则给出错误提示,并且把i的值减一,调用continue语句跳过本次循环,为下一次数据的重新输入做准备。

2显示数据的方法,此方法要考虑两种情况,既执行插入数据的方法后,应该显示9个数据,执行在指定位置插入数据的方法后应该显示10个数据,具体显示9和还是10个,可以通过判断最后最后一个元素是不是0,如果是0,既只执行了第一个方法,如果不是0,说明执行了在指定位置插入数据的方法。显示所有数据。

3在指定位置插入数据的方法,你做的效果实现是对的,就是把要指定位置及以后的数据都往后移动一位,然后把要插入的数据放到指定的位置。但是建议用一个数组完成。http://img1.sycdn.imooc.com//climg/5ad03e530001ea9007390574.jpg可以参考截图部分优化代码

4,查询可以被整除的数字,应该在没有可以被3整除的数字的时候,给出错误提示,你可以按照以下思路去完善:

定义一个字符串str用于存放能被3整除的数据,设置boolean变量的值为false。使用for循环遍历数组元素,在循环中使用if语句判断是否能被3整除,如果满足if语句的条件,则设置boolean变量的值为true,并将能被3整除的数据用字符串拼接起来,如str=str+arr+””;  

然后在循环外判断如果boolean为true则输出str的值,否则输出:数组中没有数据能被3整除。

5主方法中,当用户输入0-4以外的数字时,建议给出错误提示,提示用户重新输入。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 Felixxx #1
    public void divThree(int[] a)//此方法用于查询能被三整除的数据 { String str=new String(); boolean n=false; for(int arr:a)//增强性for循环读取a数组中的元素 { if(arr%3==0) { str=str+arr+""; n=true; } } if(n=true) { System.out.println("能被3整除的数有:"+str+"\t"); } else System.out.println("未发现能被三整除的数"); } 并未能实现您所说的“所在循环外判断如果boolean为true则输出str的值,否则输出:数组中没有数据能被3整除。”这一功能,麻烦帮我看一下是哪里需要修改,谢谢
    2018-04-14 00:04:11
  • Tender10 回复 提问者 Felixxx #2
    if(n=true) 修改成if(n==true) 即可。
    2018-04-14 23:06:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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