作业题代码求修改
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,插入数据的方法,作业中要求插入的数据不能为0,建议定义一个整型数字n,把键盘接收的数字赋值给n,对n进行判断,如果n等于0,则给出错误提示,并且把i的值减一,调用continue语句跳过本次循环,为下一次数据的重新输入做准备。
2显示数据的方法,此方法要考虑两种情况,既执行插入数据的方法后,应该显示9个数据,执行在指定位置插入数据的方法后应该显示10个数据,具体显示9和还是10个,可以通过判断最后最后一个元素是不是0,如果是0,既只执行了第一个方法,如果不是0,说明执行了在指定位置插入数据的方法。显示所有数据。
3在指定位置插入数据的方法,你做的效果实现是对的,就是把要指定位置及以后的数据都往后移动一位,然后把要插入的数据放到指定的位置。但是建议用一个数组完成。可以参考截图部分优化代码
4,查询可以被整除的数字,应该在没有可以被3整除的数字的时候,给出错误提示,你可以按照以下思路去完善:
定义一个字符串str用于存放能被3整除的数据,设置boolean变量的值为false。使用for循环遍历数组元素,在循环中使用if语句判断是否能被3整除,如果满足if语句的条件,则设置boolean变量的值为true,并将能被3整除的数据用字符串拼接起来,如str=str+arr+””;
然后在循环外判断如果boolean为true则输出str的值,否则输出:数组中没有数据能被3整除。
5主方法中,当用户输入0-4以外的数字时,建议给出错误提示,提示用户重新输入。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星