1 package com;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.Collections;
6 import java.util.List;
7 import java.util.stream.Collectors;
8
9 public class Test1 {
10
11 public static void main(String[] args) {
12
13 // NO.1 6-1 什么是数组
14 // 定义一个数组,保存五名学生的成绩
15 int[] scores = { 78, 93, 97, 84, 63 };
16
17 // 输出数组中的第二个成绩
18 System.out.println("数组中的第2个成绩为:" + scores[1]);
19
20 // NO.2 6-3 如何使用java中的数组
21 // 定义一个长度为5的字符串数组,保存考试科目信息
22 String[] subjects = new String[5];
23
24 // 分别为数组中的元素赋值
25 subjects[0] = "Oracle";
26 subjects[1] = "PHP";
27 subjects[2] = "Linux";
28 subjects[3] = "Java";
29 subjects[4] = "HTML";
30
31 System.out.println("数组中第4个科目为:" + subjects[3]);
32
33 // NO.3 6-5 使用循环操作java中的数组
34 // 定义一个长度为 3 的字符串数组,并赋值初始值
35 String[] hobbys = { "sports", "game", "movie" };
36 System.out.println("循环输出数组中元素的值:");
37
38 // 使用循环遍历数组中的元素
39
40 for (int i = 0; i < hobbys.length; i++) {
41 System.out.println(hobbys[i]);
42 }
43
44 // NO.4 6-6 编程练习
45 // 定义一个整型数组,并赋初值
46 int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
47
48 int max = nums[0]; // 假定最大值为数组中的第一个元素
49 int min = nums[0]; // 假定最小值为数组中的第一个元素
50 double sum = 0;// 累加值
51 double avg = 0;// 平均值
52
53 for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素
54 // 如果当前值大于max,则替换max的值
55
56 if (nums[i] > max) {
57
58 max = nums[i];
59 }
60
61 // 如果当前值小于min,则替换min的值
62
63 if (nums[i] < min) {
64 min = nums[i];
65 }
66
67 // 累加求和
68 sum += nums[i];
69
70 }
71
72 // 求平均值
73 avg = sum / nums.length;
74
75 System.out.println("数组中的最大值:" + max);
76 System.out.println("数组中的最小值:" + min);
77 System.out.println("数组中的平均值:" + avg);
78
79 // NO.5 7-1 如何定义java中的方法
80 // 在 main 方法中调用 print 方法
81 Test1 test1 = new Test1();
82 test1.print();
83
84 // NO.6 7-2 java中无参无返回值方法的使用
85 test1.showMyLove();
86
87 // NO.7 7-3 java中无参带返回值方法的使用
88 // 调用hello对象的calcAvg()方法,并将返回值保存在变量avg中
89 double avg1 = test1.calcAvg();
90
91 System.out.println("平均成绩为:" + avg1);
92
93 // NO.8 7-4 编程练习
94 // 调用方法并将返回值保存在变量中
95 int maxScore = test1.getMaxAge();
96
97 // 输出最大年龄
98 System.out.println("最大年龄为:" + maxScore);
99
100 // NO.9 7-5 java中带参无返回值方法的使用
101 test1.calAvg(94, 81);
102
103 // NO.10 7-6 java中带参带返回值方法的使用
104 int[] scores1 = { 79, 52, 98, 81 };
105
106 // 调用方法,传入成绩数组,并获取成绩的个数
107 int count = test1.sort(scores1);
108
109 System.out.println("共有" + count + "个成绩信息!");
110
111 // NO.11 7-8 java中方法的重载
112 test1.print();
113 // 调用带有一个字符串参数的方法
114 test1.print("jdjdj");
115
116 // 调用带有一个整型参数的方法
117 test1.print(4);
118
119 // NO.12 7-8 编程练习
120 // 调用方法并将返回值保存在变量中
121 int[] nums1 = test1.getArray(8);
122
123 // 将数组转换为字符串并输出
124 System.out.println(Arrays.toString(nums1));
125
126 // NO.13 8-1 编程练习
127 int[] scores2 = { 89, -23, 64, 91, 119, 52, 73 };
128 int count1 = 0;
129 int[] Three = test1.numThree(scores2);
130 for (int i = scores2.length - 1; i >= 0 && count1 < 3; i--) {
131 if (Three[i] > 100 || Three[i] < 0) {
132 continue;
133 } else {
134 System.out.println(Three[i]);
135 count1++;
136 }
137
138 }
139 }
140
141 // 定义了一个方法名为 print 的方法,实现输出信息功能
142 public void print() {
143 System.out.println("Hello World");
144 }
145
146 /*
147 * 定义无参无返回值的方法
148 */
149 public void showMyLove() {
150 System.out.println("我爱慕课网!");
151 }
152
153 // 定义一个返回值为double类型的方法
154 public double calcAvg() {
155
156 double java = 92.5;
157 double php = 83.0;
158 double avg = (java + php) / 2; // 计算平均值
159
160 // 使用return返回值
161 return avg;
162
163 }
164
165 /*
166 * 功能:输出学生年龄的最大值 定义一个无参的方法,返回值为年龄的最大值 参考步骤: 1、定义一个整形数组 ages ,保存学生年龄,数组元素依次为 18
167 * ,23 ,21 ,19 ,25 ,29 ,17 2、定义一个整形变量 max ,保存学生最大年龄,初始时假定数组中的第一个元素为最大值 3、使用 for
168 * 循环遍历数组中的元素,并与假定的最大值比较,如果比假定的最大值要大,则替换当前的最大值 4、使用 return 返回最大值
169 */
170 public int getMaxAge() {
171
172 int[] ages = { 18, 23, 21, 19, 25, 29, 17 };
173 int maxScore = ages[0];
174 for (int i = 1; i < ages.length; i++) {
175 if (ages[i] > maxScore) {
176 maxScore = ages[i];
177 }
178
179 }
180 return maxScore;
181
182 }
183
184 /*
185 * 功能:计算两门课程考试成绩的平均分并输出平均分 定义一个包含两个参数的方法,用来传入两门课程的成绩
186 */
187 public void calAvg(int a, int b) {
188 double c = (a + b) / 2;
189 System.out.println("pingjunfen3 " + c);
190 }
191
192 /*
193 * 功能:将考试成绩排序并输出,返回成绩的个数 定义一个包含整型数组参数的方法,传入成绩数组 使用Arrays类对成绩数组进行排序并输出
194 * 方法执行后返回数组中元素的个数
195 */
196 public int sort(int[] scores) {
197 Arrays.sort(scores);
198 System.out.println(Arrays.toString(scores));
199
200 // 要转换的list集合
201 List<String> testList = new ArrayList<String>() {
202 /**
203 *
204 */
205 private static final long serialVersionUID = 1L;
206
207 {
208 add("aa");
209 add("bb");
210 add("cc");
211 }
212 };
213
214 // 使用toArray(T[] a)方法
215 String[] array2 = testList.toArray(new String[testList.size()]);
216
217 // 打印该数组
218 for (int i = 0; i < array2.length; i++) {
219 System.out.println(array2[i]);
220 }
221 System.out.println(Arrays.toString(array2));
222
223 // list升序,降序,逆序
224 List<Integer> list = new ArrayList<Integer>() {
225 /**
226 *
227 */
228 private static final long serialVersionUID = 1L;
229
230 // {
231 // add(1);
232 // add(2);
233 // }
234 };
235 list.add(5);
236 list.add(7);
237 list.add(2);
238 list.add(6);
239 list.add(8);
240 list.add(1);
241 list.add(4);
242
243 System.out.println("正序" + Arrays.toString(list.toArray(new Integer[list.size()])));
244 // 3、逆序;
245 Collections.reverse(list);// list:4 1 8 6 2 7 5
246 System.out.println("逆序" + Arrays.toString(list.toArray(new Integer[list.size()])));
247 // 1、升序:
248 Collections.sort(list);// list: 1 2 4 5 6 7 8
249 System.out.println("升序" + Arrays.toString(list.toArray(new Integer[list.size()])));
250 // 2、降序:
251 Collections.sort(list, Collections.reverseOrder());// list:8 7 6 5 4 2 1
252 System.out.println("降序" + Arrays.toString(list.toArray(new Integer[list.size()])));
253
254 // 数组升序,降序
255 int[] a = { 5, 7, 2, 6, 8, 1, 4 };
256 // 1、升序:
257 Arrays.sort(a);// a: 1 2 4 5 6 7 8
258 System.out.println("数组升序" + Arrays.toString(a));
259 // 2、降序:
260 // List<int[]> list2=Arrays.asList(a);
261
262 // int[] src = {1,2,3,4,5,6,7,8,9,10};
263 List<Integer> list2 = Arrays.stream(a).boxed().collect(Collectors.toList());
264
265 Collections.sort(list2, Collections.reverseOrder());// a: 8 7 6 5 4 2 1
266 System.out.println("数组降序" + Arrays.toString(list2.toArray(new Integer[list2.size()])));
267 // 返回数组中元素的个数
268 return scores.length;
269
270 }
271
272 public void print1() {
273 System.out.println("无参的print方法");
274 }
275
276 public void print(String name) {
277 System.out.println("带有一个字符串参数的print方法,参数值为:" + name);
278 }
279
280 public void print(int age) {
281 System.out.println("带有一个整型参数的print方法,参数值为:" + age);
282 }
283
284 /*
285 * 功能:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值 定义一个带参带返回值的方法,通过参数传入数组的长度,返回赋值后的数组
286 */
287 public int[] getArray(int length) {
288 // 定义指定长度的整型数组
289 int[] nums = new int[length];
290
291 // 循环遍历数组赋值
292 for (int i = 0; i < length; i++) {
293
294 // 产生一个100以内的随机数,并赋值给数组的每个成员
295 nums[i] = (int) (Math.random() * 100);
296
297 }
298 return nums; // 返回赋值后的数组
299 }
300
301 // 定义方法完成成绩排序并输出前三名的功能
302
303 public int[] numThree(int[] scores) {
304 Arrays.sort(scores);
305 return scores;
306
307 }
308 }