作业题代码求修改

作业题代码求修改

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回答
好帮手慕阿莹 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下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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