作业题代码求修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 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 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧