第1关:数组的复制
任务描述
本关任务:完成将一个数组的值复制给另一个数组。
package step1;
//导入Scanner类
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
// 动态构建arr1,就是给数组规定了长度
int[] arr1 = new int[3];
// 初始化Scanner,它的变量名为sc
Scanner sc = new Scanner(System.in);
// 使用for循环动态初始化arr1数组
for (int i = 0; i < arr1.length; i++) {
arr1[i] = sc.nextInt(); // 使用Scanner类从控制台读取数据并存入arr1中
}
/********** Begin **********/
// 创建数组arr2
int[] arr2 = new int[3];
// 使用for循环将arr1的数据复制给arr2
for(int i = 0; i < arr1.length; i++){
arr2[i] = arr1[i]; // 将arr1中的元素逐个复制到arr2中
}
// 输出arr2
for(int i = 0; i < arr2.length; i++){
System.out.println(arr2[i]); // 使用for循环输出arr2中的元素
}
/********** End **********/
}
}
第2关:数组的使用
任务描述
本关任务:完成查找字符串数组中指定字符串位置的小程序。
package step2;
//导入Scanner类
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
// 初始化Scanner,它的变量名为sc
Scanner sc = new Scanner(System.in);
// str为要查找的字符串
String str = sc.next();
/********** Begin **********/
// 创建数组 arr 给数组赋值 {"张三","张三丰","张无忌","王二麻子","张富贵"}
String arr[] = {"张三","张三丰","张无忌","王二麻子","张富贵"};
// 使用for循环遍历数组arr
for(int i = 0; i < arr.length; i++){
// 如果数组中的元素与所输入的字符串相等
if(arr[i].equals(str)){
System.out.println(str + "在数组的第" + (i+1) + "个位置");
break; // 跳出循环
}
}
/********** End **********/
}
}
第3关:交换算法
任务描述
本关任务:完成两个数(a与b)的交换。
package step3;
//导入Scanner类
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
// 初始化Scanner,它的变量名为sc
Scanner sc = new Scanner(System.in);
// 从控制台读取整数,并将其赋值给变量a
int a = sc.nextInt();
// 从控制台读取整数,并将其赋值给变量b
int b = sc.nextInt();
/********** Begin **********/
// 将变量a的值赋给变量c
int c = a;
// 将变量b的值赋给变量a
a = b;
// 将变量c的值赋给变量b
b = c;
/********** End **********/
// 输出变量a的值
System.out.println(a);
// 输出变量b的值
System.out.println(b);
}
}
第4关:选择排序
任务描述
本关任务:实现数组从大到小的排序(降序排序)。
package step4;
//导入Arrays和Scanner类
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
// 初始化Scanner,它的变量名为sc
Scanner sc = new Scanner(System.in);
// 从控制台读取一个整数,作为数组的长度,并动态创建一个整型数组
int[] arr = new int[sc.nextInt()];
// 使用for循环遍历数组,并从控制台读取整数,将其存入数组中
for(int i = 0 ; i< arr.length ; i++){
arr[i] = sc.nextInt();
}
// 假设数组中第一个元素为最大值
int max = arr[0];
/********** Begin **********/
// 使用嵌套的for循环进行选择排序,将数组中的元素按照降序排列
for(int i = 0;i<arr.length-1;i++){
for(int j=i;j<arr.length-1;j++){
// 如果当前元素比后一个元素小,则交换位置
if(arr[i]<arr[j+1]){
int t = arr[i];
arr[i] = arr[j+1];
arr[j+1] = t;
}
}
}
// 将排序后的数组输出
System.out.println(Arrays.toString(arr));
/********** End **********/
}
}
第5关:冒泡排序
任务描述
本关任务:使用冒泡排序实现数组的升序排序(从小到大)。
package step5;
// 导入Arrays和Scanner类
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
// 初始化Scanner,它的变量名为sc
Scanner sc = new Scanner(System.in);
// 从控制台读取一个整数,作为数组的长度,并动态创建一个整型数组
int[] arr = new int[sc.nextInt()];
// 使用for循环遍历数组,并从控制台读取整数,将其存入数组中
for(int i = 0 ; i< arr.length ; i++){
arr[i] = sc.nextInt();
}
/********** Begin **********/
// 使用嵌套的for循环进行冒泡排序,将数组中的元素按照升序排列
for(int i = 0;i<arr.length;i++){
for(int j=0;j<arr.length-1;j++){
// 如果当前元素比后一个元素大,则交换位置
if(arr[j]>arr[j+1]){
int t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
}
// 将排序后的数组输出
System.out.print(Arrays.toString(arr));
/********** End **********/
}
}
第6关:方法的重载
任务描述
本小节需要你掌握一个Java方法重载的小程序,在每一个重载的方法中打印相应的语句。
package setp15;
public class HelloWorld {
public static void main(String[] args) {
/********** Begin **********/
// 调用无参的方法
a();
// 调用带有一个字符串参数的方法
a("educoder");
// 调用带有一个整型参数的方法
a(666);
/********** End **********/
}
/********** Begin **********/
// 无参print方法的定义
public static void a(){
System.out.println("无参的print方法");
}
// 字符串print方法的定义
public static void a(String arr){
System.out.println("带有一个字符串参数的print方法,参数值为:"+arr);
}
// 整型print方法的定义
public static void a(int num){
System.out.println("带有一个整型参数的print方法,参数值为:"+num);
}
/********** End **********/
}
第7关:选择题通通跳过
第8关:方法通关挑战
任务描述
定义一个方法,接收两个int类型的参数 a和b,求两个数的和,方法名为:getSum;
定义一个方法,接收三个double类型参数a,b,c, 返回这三个数的平均值 返回值类型为double,方法名为:getAvg;
定义一个方法,接收两个整数 a 和b 打印a行 b列的一个矩形,方法名为:printRect;
定以一个方法,接收整形数组为参数,对这个数组进行升序排序,最后输出该数组,方法名为:sortArr;
定义一个方法,完成99乘法表的打印,方法名为 :Print99。
package setp17;
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
/********** Begin **********/
/**
* 第一题:定义一个方法 接收两个整数类型的参数 a和b,返回两个数的和 返回值类型为int 方法名为:getSum
*/
public static int getSum(int a, int b) {
return a + b;
}
/**
* 第二题: 定义一个方法 接收三个double类型参数a,b,c, 返回这三个数的平均值 返回值类型为double 方法名为:getAvg
*/
public static double getAvg(double a, double b, double c) {
return (a + b + c) / 3;
}
/**
* 第三题: 定义一个方法 接收两个参数 a 和b 打印a行 b列的一个矩形 不需要返回值 方法名为:printRect
*/
public static void printRect(int a, int b) {
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
System.out.print("*");
}
System.out.println();
}
}
/**
* 第四题:定以一个方法,接收整形数组 为参数 对这个数组进行升序排序 最后输出该数组 不需要返回值 方法名为 sortArr
*/
public static void sortArr(int[] arr) {
int i, j, t;
for (i = 0; i < arr.length; i++) {
for (j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
for (i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/**
* 第五题
* 你只需要实现for 循环括号的内容就可 ,打印语句系统已经给你完成
*/
public static void Print99() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + " * " + i + " = " + (j * i) + "\t");
}
System.out.println();
}
}
public static void main(String[] args) {
int[] array = new int[30];
Scanner in = new Scanner(System.in);
System.out.println(getSum(in.nextInt(), in.nextInt()));
System.out.println(getAvg(in.nextDouble(), in.nextDouble(), in.nextDouble()));
printRect(in.nextInt(), in.nextInt());
for (int i = 0; i < 5; i++) {
array[i] = in.nextInt();
}
sortArr(array);
Print99();
}
}