day01课后作业题
单选题
1.Java跨平台操作是通过(C)来实现的
A.电脑
B.JDM
C.JVM
D.JRM
2.JDK、JRE、JVM的关系是(B) 🌟
A.JDK包含JVM、JRE、开发工具
B.JDK包含JRE和开发工具,JRE包含JVM和核心类库
C.JDK包含JVM和开发工具,JVM包含JRE和核心类库
D.JRE包含JDK和JVM
3.Java编译工具为(A) 🌟
A.javac.exe
B.java.exe
C.javaw.exe
D.javaf.exe
4.Java运行工具为(B)
A.javac.exe
B.java.exe
C.javaw.exe
D.javaf.exe
5.以下程序写法正确的是(C)
A.
public class HelloWorld{
public static void main(string[] args){
System.out.println("HelloWorld");
}
}
B.
public class HelloWorld{
public static void main(String[] args){
System.Out.println("HelloWorld");
}
}
C.
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
D.
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld")
}
}
6.以下变量的标识符写法正确的是(D)
A.#AAA
B.2B
C.class
D.Class
多选题
1.截止到目前为止Java共有哪几个版本(ACD)
A.Java SE
B.Java FE
C.Java EE
D.Java ME
2.以下DOS指令说法正确的是(ABC)
A.E:回车 表示切换到E盘
B.cd 目录 表示打开进入目录
C.cd … 表示回退到上一级目录
D.cd . 表示回退到上一级目录
3.JDK12中运行HelloWorld.java使用的指令(BD)
A.javac HelloWorld.java 和 java HelloWorld.class
B.javac HelloWorld.java 和 java HelloWorld
C.javaf HelloWorld.java 和 java HelloWorld
D.java HelloWorld.java
4.以下属于常量的有(ABCDEF)
A.“Hello World”
B.7989
C.1.314
D.‘Z’
E.true
F.null
5.java数据的基本类型有(ABCEFGHI)
A.int
B.byte
C.short
D.String
E.long
F.float
G.double
H.char
i.boolean
6.以下在Java中定义变量的方式正确的有(ABC)
A.
int a = 10;
B.
int a;
a = 10;
C.
int a = 10, b = 20, c = 30;
D.
int a = 10, a = 20, c = 30;
代码题
需求介绍:
定义2个变量,分别保存1和2,然后使用代码交换两个变量的值,并输出交换后的值;
思路提示:
可以想象一下,假如你左手拿着苹果,右手拿着橘子,如何才能交换两只手中的水果呢?
答案是找个临时位置周转一下即可;
那么在本题中,也可以使用临时变量保存一下,周转一圈即可;
案例效果:
代码:
public static void main(String[] args){
int a = 1;
int b = 2;
System.out.println("交换前:");
System.out.println(a);
System.out.println(b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("交换后:");
System.out.println(a);
System.out.println(b);
}
day02课后作业题
单选题
1.以下变量声明不正确的是 (B)
A、int _a = 10;
B、int 0x = 1996;
C、String string = “itheima”;
D、String S1994 = “String”;
2.为一个boolean类型变量赋值时,可以使用(D)方式
A、boolean a = 1;
B、boolean a = " false ";
C、boolean a =“真”;
D、boolean a = false;
3.下面哪种情况能实现自动转换 。B
A、int型转换成byte型
B、float型转换成double型
C、double型转换成int型
D、char型转换成String型
4.代码System.out.println(10+“hello”+”20”+”30”+”world”)正确输出为( A )
A、10hello2030world
B、60helloworld
C、10hello50world
D、helloworld102030
5.设有定义 int i = 6 ,则执行以下语句后,i 的值为( C )。 🌟
i += i - 1;
A、10
B、121
C、11
D、100
6.下面的代码段中,执行之后i 和j 的值是什么( B )
int i = 1;
int j;
j = i++ * 2 + 3 * --i;
A、1, 2
B、1, 5
C、2, 1
D、2, 2
7.对下列表达式值的判断正确的一个是( C )
A.、23<43的值为false
B、18>=19的值为true
C、12<=12的值为true
D、66!=22的值为false
8.设int x=6,y=10,则y>=6&&x<=y的值为( A )
A、true
B、10
C、false
D、6
代码题
1.训练案例1
1.1.训练描述
键盘录入一个int类型的数据,使用三元运算符判断这个数是奇数还是偶数
1.2.操作步骤提示
-
创建键盘录入对象
-
调用方法获取输入的数据
-
将变量%2如果 == 0 是偶数,否则是奇数
-
输出结果
代码:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = sc.nextInt();
System.out.println(num % 2 == 0 ? "偶数" : "奇数");
}
2. 扩展案例2
2.1.训练描述
1.使用键盘输入两个整数,分别表示小明左、右手中的两张纸牌(比如:黑桃10和红桃8,数字10和8可通过键盘录入),要求编写代码交换小明手中的牌
2.程序运行的结果如下:
请输入小明左手中的纸牌:10
请输入小明右手中的纸牌:8
互换前小明手中的纸牌:
左手中的纸牌:10
右手中的纸牌:8
互换后小明手中的纸牌:
左手中的纸牌:8
右手中的纸牌:10
2.2. 操作步骤描述
-
创建Scanner对象
-
录入第一个数据赋值给变量left
-
录入第二个数据赋值给变量right
-
定义一个临时变量temp,保存left的值
-
将right的值赋值给left
-
将临时变量temp的值赋值给right
-
按格式打印left和rigth中的值
代码:
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入小明左手中的纸牌:");
int left = sc.nextInt();
System.out.println("请输入小明右手中的纸牌:");
int right = sc.nextInt();
System.out.println("互换前小明手中的纸牌:");
System.out.println("左手中的纸牌:" + left);
System.out.println("右手中的纸牌:" + right);
left = left ^ right;
right = left ^ right;
left = left ^ right;
System.out.println("互换后小明手中的纸牌:");
System.out.println("左手中的纸牌:" + left);
System.out.println("右手中的纸牌:" + right);
}
day03课后作业题
选择题
1.B、2.D、3.D、4.C、5.B 、6.D、7.A、8.C、9.B、10.B
1.for循环格式如下:
for(表达式1;表达式2;表达式3){
//code
}
下面描述正确的是( )
A. 表达式1处的代码会被执行多次
B. 表达式1处可以定义变量
C. 表达式3用于决定循环是否应该结束
D. 表达式2的值可以是任意类型,也可以是boolean类型
2.下面的代码段执行之后count的值是什么( )
int count = 1;
for (int i = 1; i <= 5; i++) {
count += i; // count = count + i;
}
System.out.println(count);
A、5
B、1
C、15
D、16
3.下列语句序列执行后,i的值是 ( )
int i=16;
do {
i /= 2;
} while( i > 3 );
A、16
B、8
C、4
D、2
4.while循环和 do…while循环的区别是 ( )
A、没有区别,这两个结构任何情况下效果一样
B、while循环比 do…while循环执行效率高
C、do…while循环是先循环后判断,所以循环体至少被执行一次
D、while循环是先循环后判断,所以循环体至少被执行一次
5.以下由 for 语句构成的循环执行的次数是 ( )
for ( int i = 0; true; i++)
A、有语法错,不能执行
B、无限次
C、执行1次
D、一次也不执行
6:下列程序的运行结果是 ()
public static void main(String [] args){
int i = 1;
while(i <= 10){
i++;
if(i % 2 == 0) {
System.out.println("HelloWorld");
}
}
}
A: 输出1次HelloWorld
B: 输出2次HelloWorld
C: 输出4次HelloWorld
D: 输出5次HelloWorld
7:下列关于continue和break的描述正确的是
A: continue只能用于循环体中
B: break只能用于循环体中
C: continue只能用于switch语句体中
D: break只能用于switch语句块中
8:分析以下代码片段,并按照下列两个问题在横线处补全代码,下列选项正确的是
public class Test01 {
public static void main(String[] args) {
for(int x=1; x<=10; x++) {
if(x % 3==0) {
// 补全代码
__________
}
System.out.println("我爱Java!");
}
}
}
问题:
① 在控制台输出2次:“我爱Java!” 横线处应该填写什么?
② 在控制台输出7次:“我爱Java!” 横线处应该填写什么?
A: ①continue
②break
B: ①continue
②continue
C: ①break
②continue
D: ①break
②break
9:下列代码的运行结果是
public static void main(String[] args) {
int count = 0;
for(int i = 1;i <= 10;i++) {
if(i % 5 == 0) {
break;
}
if (i == 3 || i == 7 || i == 9){
continue;
}
count++;
}
System.out.println(count);
}
A: 4
B: 3
C: 2
D: 1
10:下列代码能够用于随机产生[1,99]包含1,包含99之间整数的是( )
A:
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt(40)+59;
System.out.println(num);
}
B:
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt(99) + 1;
System.out.println(num);
}
C:
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt(99);
System.out.println(num);
}
D:
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt(100)-1;
System.out.println(num);
}
代码题
1.训练案例1
需求:
假如某店铺搞推销活动,对前100个进店消费的客户都下发一个号码牌(1–100号),如果用户手中的号码牌是8的倍数,那么该客户就可以以号码牌数字的价格购买电风扇一台(例如8号客户8元即可购买,16号客户16元即可购买…以此类推),如果该商场今天刚好来了100个客户,请问该店铺今天一共卖出了多少台打折的风扇,这些打折的风扇总共卖了多少钱?
思路提示:
本题实际上是一个范围求和的题目,只需要使用循环语句,确定循环的范围(1–100),然后再对这些数字进行判断,如果数字是8的倍数,则累加求和即可;
运行效果:
该店铺一共卖了:12台打折的风扇!,这些打折风扇总共卖了:624元钱!
代码
public static void main(String[] args){
int cmd = 0, sum = 0;
for (int i = 1; i < 101; i++) {
if (i % 8 == 0){
sum += i;
cmd++;
}
}
System.out.println("该店铺一共卖了:"+
cmd +"台打折的风扇!,这些打折风扇总共卖了:" +
sum + "元钱!");
}
2.训练案例2
需求:
循环录入某学生的5门课程的成绩并计算平均分。如果某分数录入为负,则停止录入并提示录入错误。
思路提示:
-
创建键盘录入对象
-
定义int类型的变量sum(总分)和avg(平均分),两个变量的初始值位0
-
定义boolean类型的变量flag(表示该学生的5门成绩是否正确录入,如果有负值,则将flag修改为true,表示录入错误),初始值为false
-
利用for循环,录入5个成绩
(1)判断当前的成绩如果小于0,flag赋值为true,终止for循环
(2)否则,如果当前录入的成绩>=0,累加求和
-
打印结果
(1)如果flag为true,打印录入错误
(2)否则如果flag为false,打印总分和平均分
运行效果:
代码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum = 0;
boolean flag = false;
for (int i = 0; i < 5; i++) {
System.out.println("请输入第"+(i+1)+"门成绩");
int num = sc.nextInt();
if (num < 0){
flag = true;
break;
}
sum += num;
}
if (flag)
System.out.println("客官不可以,录入数据有误");
else{
System.out.println("总分:" + sum);
System.out.println("平均分:" + sum/5);
}
}
day04课后作业题
单选题
1.D、2.C、3.C、4.B、5.D 、6.B、7.C、8.B、9.C
1.数组a的第三个元素表示为( )
A.a(3)
B.a[3]
C.a(2)
D.a[2]
2.下面正确的初始化语句是( )
A. char str[]=“hello”;
B. char str[100]=“hello”;
C. char str[]={‘h’,‘e’,‘l’,‘l’,‘o’};
D. char str[]={‘hello’};
3.数组在Java中储存在( ) 中
A.栈
B.队列
C.堆
D.链表
4.关于数组默认值,错误的是( )
A.double – 0.0
B.boolean–true
C.float–0.0
D.int-- 0
5.以下( )代码,能够对数组正确初始化(或者是默认初始化)。
A.int[] a;
B.a = {1, 2, 3, 4, 5};
C.int[] a = new int[5]{1, 2, 3, 4, 5};
D.int[] a = new int[5];
6.当访问无效的数组下标时,会发生( )
A.中止程序
B.抛出异常
C.系统崩溃
D.直接跳过
7.代码如下,运行结果是7,则横线处应该填写的内容是( )
public static void main(String[] args){
int[] arr = { 3,7,6,9,2,5,8 };
System.out.println(____________);
}
A. arr[6]
B.arr[2]
C.arr[1]
D.arr[0]
8:下列代码能够正常遍历数组的是( )
A.
public class Demo{
public static void main(String[] args){
int[] arr = {1,2,3,4,5,6,7};
for (int i = 0; i <= arr.length; i++) {
System.out.println(arr[i]);
}
}
}
B.
public class Demo{
public static void main(String[] args){
int[] arr = {1,2,3,4,5,6,7};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
C.
public class Demo{
public static void main(String[] args){
int[] arr = {1,2,3,4,5,6,7};
int i = 0;
while(i < arr.length){
System.out.println(arr[i]);
}
}
}
D.
public class Demo{
public static void main(String[] args){
int[] arr = {1,2,3,4,5,6,7};
for (int i = 0; ; i++) {
System.out.println(arr[i]);
}
}
}
9.下面代码用于获取数组的最大值,画横线区域处应填写代码正确的是 ( )
public static void main(String[] args){
int[] arr = { 2,7,-1,6,3 };
_____(1)______
for(int i=1;i<arr.length;i++){
if(___(2)____){
___(3)____
}
}
System.out.println("最大值是:" + max);
}
A.
(1)int max = 0;
(2)arr[i]<max;
(3)arr[i] = max;
B.
(1)int max = 0;
(2)arr[i] > max;
(3)max = arr[i];
C.
(1)int max = arr[0];
(2)arr[i] > max;
(3)max = arr[i];
D.
(1)int max = arr[0];
(2)arr[i] > max;
(3)arr[i]= max ;
代码题
1. 训练案例1
1. 训练考核知识点
数组,循环,if
2. 训练描述
假设小明同学本周5天的日盈利分别如下:
int[] arr = {1,3,-1,5,-2}
为了防止同行偷窥行业机密,小明决定将上面的实际营业额重新记录一份,这次记录的时候,把上面数组中的内容倒着记录,并将所有的负数按0记录。请你帮小明把上面的结果按小明的规则重新保存到一个新数组中,并打印出来;
打印格式:
原数组内容:{1,3,-1,5,-2}
新数组内容:{0,5,0,3,1}
3. 操作步骤描述
1.使用静态初始化创建原始数组 {1,3,-1,5,-2}
2.定义长度为5的int类型的新数组newArr,新数组的长度和原数组长度一致。
3.倒着遍历原数组
(1)定义int类型的变量num,并将数组当前元素的值赋值给num
(2)使用if判断num的值
a.如果num>=0,直接将num赋值给新数组的当前元素,index++
b.否则直接将0复制给新数组的当前元素,index++
4.按照题目的格式打印原数组和新数组的内容
代码
public static void main(String[] args) {
/*
Day4
*/
int[] arr = {1,3,-1,5,-2};
int[] newarr = new int[5];
for (int i = 0, j = 4; i < 5; i++, j--) {
if (arr[j] > 0)
newarr[i] = arr[j];
}
System.out.print("原数组内容:{");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length-1)
System.out.println(arr[i] + "}");
else
System.out.print(arr[i] + ",");
}
System.out.print("新数组内容:{" + newarr[0]);
for (int i = 1; i < arr.length; i++) {
System.out.print("," + newarr[i]);
}
System.out.println("}");
}
day05课后作业题
单选题
1.C、2.B、3.B、4.D、5.B
1.要想使如下代码运行结果是:我是跳跳虎,则横线处应该填写的正确代码是( )
public static void main(String[] args){
________________________________
}
public static void method(){
System.out.println("我是跳跳虎");
}
A:method;
B:void v = method();
C:method();
D:method(“我是跳跳虎”);
2.请观察以下代码,分别为1,2处选出正确选项,保证可以在控制台上输出 wo ai java
public class Test08 {
public static void main(String[] args){
_____①_____
}
public _____②_____ print() {
System.out.println("wo ai java");
}
}
A:① void v = print(); ② static void
B:① print(); ② static void
C:① int v = print(); ② static int
D:① print(); ② static
3:下列方法定义格式正确的是( )
A:
public static void method1(){
public static void method2(){
}
}
B:
public static void method1(){
}
C:
public static void method1(){
return 10;
}
D:
public static boolean method1(int n){ javac 只看语法,不执行代码 java
if(n < 10){
return false;
}else if(n >= 10){
return true;
}
}
4:观察以下代码,请选出方法调用过程的正确顺序()
public static void main(String[] args) {
System.out.println("开始执行"); //1
int a = print(10); //2
System.out.println(a); //3
}
public static int print(int n){ //4
n += 10; //5
return n; //6
}
A:1,2,3,4,5,6
B:1,2,4,6,5,3
C:1,4,5,6,2,3
D:1,2,4,5,6,3
5:以下选项中,方法定义的注意事项描述不正确的是()
A: 方法定义的位置,在类中方法外
B: 方法的参数的数据类型要和返回值类型一致,否则编译失败
C: 方法的返回值类型,必须要和return语句中返回值的数据类型匹配,否则编译失败
D: 不能在return后面写代码,return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码
多选题
6.ABD、7.ABD、8.ACD
6:下面关于方法的概述描述,正确的是()
A:方法定义的先后顺序无所谓
B:方法的定义不能产生嵌套包含关系。
C:方法可以让程序的执行效率更高
D:方法定义好了之后,不会执行的,如果要想执行,一定要进行方法的调用
7:以下选项中,关于方法定义的参数或返回值描述正确的是( )
A:方法的参数可以有,可以没有,也可以有多个
B:方法的参数就是定义一些变量,当方法被调用的时候,用来接收数据使用的
C:一个方法执行完成之后可以有一个返回值 ,也可以有多个返回值
D:方法的返回值是方法执行完成之后得到的结果
8:以下选项中,关于方法的调用过程描述正确的是 ()
A: 由java虚拟机调用main方法,main方法先执行
B:在main方法执行中,会定义a和b变量,并分别赋值10和20,然后先调用isEquals方法,再调用getSum方 法并输出结果
C:调用getSum方法时,要先传入两个整数,否则编译失败。然后执行getSum方法内的代码,执行完成之后,将结果返回赋值给int类型的变量sum
D: 调用isEquals方法时,要先传入两个整数,否则编译失败。然后执行isEquals方法内的代码,执行完成之后,没有结果返回
代码题
1. 训练案例1
1. 训练描述
创建长度为5的数组,键盘录入数组数据,创建一个方法,让数组最大元素与数组最小元素交换,最后返回整理好的数组。
输入格式
请录入数组第1个元素
10
请录入数组第2个元素
20
请录入数组第3个元素
43
请录入数组第4个元素
3
请录入数组第5个元素
18
输出格式
您输入的数组为:
10 20 43 3 18
改变后的数组为:
10 20 3 43 18
2. 操作步骤描述
- 创建长度为5的数组
- 使用循环进行5此键盘录入,录入数组的元素
- 使用循环,输出原数组元素
- 调用方法,完成数组最大元素和最小元素交换
- 输出改变后的数组元素
代码
public static void main(String[] args) {
int[] arr = new int[5];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.println("请录入数组第" + (i+1) + "个元素");
arr[i] = sc.nextInt();
}
System.out.println("您输入的数组为:");
print(arr);
swap(arr);
System.out.println("改变后的数组为:");
print(arr);
}
private static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void swap(int[] arr){
int max = arr[0];
int maxi = 0;
int min = arr[0];
int mini = 0;
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]){
max = arr[i];
maxi = i;
}
if (min > arr[i]){
min = arr[i];
mini = i;
}
}
arr[mini] = max;
arr[maxi] = min;
}
day06课后作业题
单选题
1.C、2.B、3.D、4.C
1.下列代码的运行结果是( )
public static void main(String[] args) {
int sum=0;
for (int i = 1; i < 3; i++) {
for (int j = 1; j < 3; j++) {
sum+=i*j;
}
}
System.out.println("sum="+sum);
}
A.sum=3
B.sum=4
C.sum=9
D.sum=5
2.下列代码的运行结果是( )
public static void main(String [] args){
for (int i = 0; i < 1; i++) {
System.out.println("执行语句1");
for (int j = 0; j < 2; j++) {
System.out.println("执行语句2");
}
System.out.println("执行语句3");
}
}
A.没有输出结果
B.执行语句1
执行语句2
执行语句2
执行语句3
C.执行语句1
执行语句2
执行语句3
D.执行语句1
执行语句2
执行语句2
执行语句3
执行语句1
执行语句2
执行语句2
执行语句3
3:下面是有关数组反转的实现原理的描述,说法错误的是( )
A.数组反转过程中,会定义两个int类型的变量,分别保存数组的最大索引值和数组的最小索值
B.数组反转过程中,判断循环结束,其条件是保存数组的最大索引值的变量值小于等于保存数组的最小索引值的变量值
C.数组反转过程中,需要将对称索引位置的元素,进行数据交换
D.数组反转过程中,原始数组的数据和顺序不发生改变
4:下列代码的作用是对数组中的元素存储位置进行反转,如:原数组[1,2,3,4] 反转后的数组为:[4,3,2,1] ,横线处应该填写的代码是( )
public static void main(String[] args) {
int arr[] = {1, 2, 3, 6, 8, 9};
for (int min = 0, max = arr.length - 1;__________; min++, max--) {
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
A.min > max
B.min >= max
C.min < max
D.min == max
多选题
5.ABCD
5:代码如下,下列关于数组的反转描述正确的是( )
public static void main(String[] args) {
int[] array = { 10, 20, 30, 40, 50 };
for (int min = 0, max = array.length - 1; min < max; min++, max--) {
int temp = array[min];
array[min] = array[max];
array[max] = temp;
}
}
A.数组反转就是将数组中元素的顺序颠倒,要先找到数组中的最小索引和最大索引。最小索引:0,最大索引就是:array.length - 1,分别保存在两个int类型的变量中
B.如果数组中元素的个数是未知的,通过for循环拿到每个元素,但是要限制循环的次数,只要保证min记录的索引小于max记录的索引即可
C.每循环一次,就会对数组中元素进行一次交换。
D.每次交换数据之后,就会对min和max记录的值修改,小索引min需要加1,大索引max需要减1
代码题
1.扩展案例1
需求
请自定义一个方法,在方法中打印出九九乘法表,并在main方法中调用自定义的方法;
思路提示
1:九九乘法表是固定的格式,所以该方法无需设计参数和返回值;
2:打印九九乘法表的格式和打印直角三角形的形式几乎是一致的,仅仅是把打印的元素替换成乘法表的表达式即可;
3:每个表达式之间使用"\t"转义字符分隔,当一行表达式打印完之后可以执行换行的操作;
代码:
public static void main(String[] args) {
nine();
}
public static void nine(){
for(int i = 1; i < 10; i++){
for (int j = 1; j <= i; j++){
System.out.print(j + "x" + i + "=" + (i*j) + "\t");
}
System.out.println();
}
}
2.训练案例2
[ 五星难度-如果看完需求没思路不推荐花费大量时间研究,难度过高,仅供有兴趣的学生研究 ]
2.1.训练描述
假如一个班级中有3个小组,第一个小组中有3个人,第二个小组中有5个人,第三个小组中有2个人,请分别定义两个方法,一个方法使用代码随机给三个小组中的每个人保存一个1-100之间的随机数作为分数,另一个方法计算出每个小组内成绩的平均分;
2.2.操作步骤描述
1.在main方法中创建一个二维数组,二维数组中的第一个一维数组长度为3,二维数组中的第2个一维数组长度为5,二维数组中的第3个一维数组长度为2;
2.自定义第一个方法,参数是二维数组,无需返回值,在方法中,利用随机数,给二维数组中的每一个一位数组中的学生保存随机成绩;
3.自定义第二个方法,参数是二维数组,返回值是一维数组,在方法体中计算每个小组的平均分并分别保存到新的一维数组中,然后返回一维数组;(新的一维数组自己创建,长度为3,保存的是每一个小组的平均分)
代码:
public static void main(String[] args) {
// int[][] nums = new int[][]{new int[3],new int[5],new int[2]};
int[][] arr = new int[3][];
arr[0] = new int[3];
arr[1] = new int[5];
arr[2] = new int[2];
Fen(arr);
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
int[] avg = avg(arr);
for (int i = 0; i < avg.length; i++) {
System.out.print(avg[i]+"\t");
}
}
public static void Fen(int[][] arr){
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = r.nextInt(100)+1;
}
}
}
public static int[] avg(int[][] arr){
int[] avg = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
int sum = 0;
for (int j = 0; j < arr[i].length; j++) {
sum += arr[i][j];
}
avg[i] = sum/arr[i].length;
}
return avg;
}
3.训练案例3[超级变态难-主要是算法规则难]
3.1.训练描述
创建方法,打印出杨辉三角形(要求打印出10行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
3.2.操作步骤描述
1.每个数的计算方式,当前位置的元素,等于上一行左右两边的元素之和,具体看下图:
2.制表符("\t")的打印数量
可以利用循环嵌套的思路实现打印制表符的数量,具体规则如下:
第一行:4个"\t"
第二行:3个"\t"
第三行:2个"\t"
第四行:1个"\t"
第五行:没有
此外数字之间是两个"\t"。
代码:
public static void main(String[] args) {
int[][] arr = Y();
for (int i = 0; i < arr.length; i++) {
for (int q = i+1; q < arr.length; q++) {
System.out.print("\t");
}
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t\t");
}
System.out.println();
}
}
public static int[][] Y(){
int[][] arr = new int[10][];
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i+1];
arr[i][0] = arr[i][i] = 1;
if (i > 1) {
for (int j = 1; j < arr[i].length-1; j++) {
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
}
return arr;
}