作业题代码求修改
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积分~
来为老师/同学的回答评分吧
0 星