对于提交的8-2作业题的订正,请老师批阅~

对于提交的8-2作业题的订正,请老师批阅~

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package zuoye;
 
import java.util.Scanner;
 
/**
 
 * @author Administrator
 * @description 包含8个元素的整型数组 
 *
 */
public class Demo {
 
    public static void main(String[] args) {
         
        Demo demo = new Demo();
        int input;
        int[] data = null;
        boolean esc = false;
         
        Scanner sc = new Scanner(System.in);
         
        while(!esc) {//while(true)
            demo.notice();
             
            input = sc.nextInt();
             
            switch(input) {
                case 1:
                    data = demo.insertData();
                    demo.showData(data,data.length);       
                    break;
                     
                case 2:
                    demo.showData(data,8);
                    break;
                     
                case 3:
                    System.out.println("请输入要插入的数据:");
                    int num = sc.nextInt();
                    System.out.println("请输入要插入数据位置:");
                    int location = sc.nextInt();                
                    demo.insertAtArray(data,num,location);
                    break;
                     
                case 4:
                    demo.divThree(data);
                    break;
                     
                case 0:
                    esc = true;
                    System.out.println("退出程序!");
                    break;
                     
                default:
                    System.out.println("请输入正确的数字!");
                    //为了使switch语句语法更加完整,建议在default语句后面添加一个break
                    break;
                     
            }
             
            System.out.println();
             
        }
 
    }
     
    public void notice() {
        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("请输入对应的数字进行操作:");
    }
     
    public int[] insertData() {
         
        Scanner sc = new Scanner(System.in);
         
        int[] data = new int[8];
         
        for(int i = 0;i < 7;i++) {
            System.out.println("请输入第" + (i+1) +"个数据:");
            int input = sc.nextInt();//
            if(input == 0) {
                System.out.println("添加到数组中的数据不能为0");
                i--;
                continue;
            }
            data[i] = input;
             
        }
         
        return data;
         
    }
     
    public void showData(int[] data,int length) {
        System.out.println("数组元素为:");
        for(int i = 0;i < length;i++) {
            if(data[i] != 0) {//
                System.out.print(data[i] + "   ");
            }
        }
    }
     
    /**
     
     * @param data
     * @param n 插入的数据
     * @param k 插入的位置
     */
   public void insertAtArray(int[] data,int n,int k) {
         
        if(!(k == data.length - 1)) {
 
            //应该将i>=k修改为i>k,不然会导致数组的第0个索引无法插入数据。
            //对数数组的插入操作,一律要考虑第一个、最后一个、中间的位置情况
            for(int i = data.length -1;i > k;i--) {//逆向思维
                data[i] = data[i-1];
            }
        }
         
       data[k] = n; 
        
        //输出数组元素时,建议直接调用显示数据方法
       //有重复的地方就是可以优化的地方
       showData(data,8);//在与main同级的自定义方法中调用其他方法,直接写方法名    
   }
    
   public void divThree(int[] data) {
        
       int count = 0;
 
       for(int value:data) {
           if(value % 3 == 0 && value != 0) {
               count++;
           }
       }
        
       if(count == 0) {
           System.out.print("没有能被3整除的数据");
       }else {
           System.out.print("数组中能被3整除的元素为:");
          for(int value:data) {
              if(value % 3 == 0 && value != 0) {
                  System.out.print(value + "   ");
              }
          }
       }
        
   }
 
}


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

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

2回答
好帮手慕珊 2017-08-07 15:16:18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void divThree(int[] data) {
         
       int count = 0;
  
       for(int value:data) {
           if(value % 3 == 0 && value != 0) {
               count++;
           }
       }
         
       if(count == 0) {
           System.out.print("没有能被3整除的数据");
       }else {
           System.out.print("数组中能被3整除的元素为:");
          for(int value:data) {
              if(value % 3 == 0 && value != 0) {
                  System.out.print(value + "   ");
              }
          }
       }
         
   }

这个方法可以改进一下,用一个循环就可以了。

定义一个字符串str用于存放能被3整除的数据,在第一个循环的if语句中将能被3整除的数据用字符串拼接起来,如str=str+a[i]+””;

然后else语句后面的循环去掉,直接输出str的值就可以了。

其他没有问题,如果提交改后的作业,可以再次提交作业即可,不用复制到问答区。祝学习愉快!

  • 提问者 专业躺鸡 #1
    public void divThree(int[] data) { String str = ""; for(int value:data) { if(value % 3 == 0 && value != 0) { str += value + " "; } } if(str.equals("")) { System.out.print("没有能被3整除的数据"); }else { System.out.print("数组中能被3整除的元素为:"); System.out.print(str); } }
    2017-08-09 08:47:41
  • 提问者 专业躺鸡 #2
    1.回复区域不允许格式化显示java代码和删除已回复内容,所以上面贴出的代码很乱,不好意思。 2.上面的代码不完全按照老师的说法去做的,您看这样合理不? 3.做出修改的原则是少使用循环的原则,还是重复的地方尽量统一化原则?
    2017-08-09 08:51:17
irista23 2017-08-06 23:40:13

好 我们会把代码提交给相关负责人员。

  • 提问者 专业躺鸡 #1
    谢谢啦,老师~
    2017-08-07 11:41:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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