难度一般,很多都是前面学过的方法,拿过来用就行了
掌握知识点
第一关
- equals()方法,判断地址是否相同
第二关
- 随便看看就行了
第三关
- substring()方法
- indexOf()方法
- toUpperCase()方法
第四关
- Random类
- Random种子
- ints().toArray()方法
第五关
- Date类
- SimpleDateFormat类
- parse()方法,格式化日期
- getTime()方法,获得毫秒
第六关(输出写在一行了,我故意的 )
- Math函数全部用法
通关源码
第1关:Object类
package case1;
import java.util.Scanner;
public class ObjectTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
// 在测试类中创建Demo类对象d1,传入输入值num1, d1调用toString方法并打印输出该值
// 创建Demo类对象d2,同样传入输入值num1,打印判断d1和d2是否相等(实际是比较地址)
/********* Begin *********/
Demo d1 = new Demo(num1);
System.out.println(d1.toString());
Demo d2 = new Demo(num1);
System.out.println(d1.equals(d2));
/********* End *********/
// 创建Person类对象p,传入输入值num2,打印判断d1和p是否相等(实际是比较地址)
/********* Begin *********/
Person p = new Person(num2);
System.out.println(d1.equals(p));
/********* End *********/
}
}
class Demo {
private int num;
public Demo(int num) {
this.num = num;
}
public boolean equals(Object obj) // Object obj = new Demo()
{
if (!(obj instanceof Demo)) // 判断obj是否和Demo是同类
return false;
Demo d = (Demo) obj; // 将父类的引用(Object)向下转换为子类(Demo)
return this.num == d.num;
}
public String toString() {
return "Demo:" + num; // 返回对象的值(每一个对象都有自己的特定的字符串)
}
}
class Person {
private int num;
public Person(int num) {
this.num = num;
}
}
第2关:JAVA基础类型包装类-练习
package case2;
import java.util.Scanner;
public class WrapperTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int aa = sc.nextInt();
String bb = sc.next();
int c = sc.nextInt();
String str11 = sc.next();
String str22 = sc.next();
// 包装类中“==”与equals的用法比较
// 值得注意的是,包装类中的equals方法和String类一样,都是重写了Object类中的equals方法,因此比较的是内容而不是地址,
// 而“==”比较的依然是引用变量的地址,只是当包装类型和与之相对应的基本类型进行“==”比较时会先做自动拆箱处理。
/********* Begin *********/
Integer a = new Integer(aa);
Integer b = new Integer(bb);
//c、aa、bb、c对应的数值相等
String str1 = new String(str11);
String str2 = new String(str22);
//str1和str2对应的内容相等
System.out.println(a == b);
System.out.println(a == c);
System.out.println(b == c);
System.out.println(a.equals(b));
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
}
第3关:String&StringBuilder&StringBuffer类-练习
package case3;
import java.util.Scanner;
public class StringTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
// 在java api 中,通常使用两个数字表示范围时,都是含头不含尾,即包含起始下标对应的内容,但不包含结束下标的处对应的内容
String get = str.substring(12); //从第12索引值开始截取
int index = get.indexOf("."); //从get值得第1点下标
String get2 = get.substring(0,index); //从开始截取到第一个点为止
System.out.println(get2 + "\n" + get2.toUpperCase()); //输出get2换行转写大写
}
}
第4关:Random类
package case4;
//密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码
import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;
public class RandomTest {
public static void main(String[] args) {
// 定义一个字符型数组
char[] pardStore = new char[62];
// 把所有的大写字母放进去 把所有的小写字母放进去 把0到9放进去
/********* Begin *********/
char number = 48;
char upper = 65;
char loser = 97;
for(char i = 0; i < 26; i++){
pardStore[i] = (char) (upper + i);
}
for(char i = 26; i < 52; i++){
pardStore[i] = (char) (loser + i - 26);
}
for(char i = 52; i < 62; i++){
pardStore[i] = (char)(number + i - 52);
}
//测试
// System.out.println(Arrays.toString(pardStore));
Scanner sc = new Scanner(System.in);
int seed = sc.nextInt();
/********* Begin *********/
Random r = new Random(seed);
int[] arr = new int[6]; //random只能获得整型,所以用int数组
arr = r.ints(6,0,62).toArray(); //只能获得整型,随机获得6个数据,从0到61中
for(int i = 0; i < arr.length; i++){
System.out.print(pardStore[arr[i]]); //arr[i]作为pardStore索引输出
}
}
}
第5关:Date类和SimpleDateFormat类的用法
package case5;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateTest {
public static void main(String[] args) throws ParseException {
// 键盘录入你的出生年月日 格式为yyyy-MM-dd
// 把该字符串转换为一个日期
// 通过该日期得到一个毫秒值
// 获取2020年10月1日的毫秒值
// 两者想减得到一个毫秒值
// 把该毫秒值转换为天 打印输出
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
SimpleDateFormat input = new SimpleDateFormat("yyyy-MM-dd"); //注意,m必须大写,具体原因尚不清楚
Date date = input.parse(line); //输入日期
Date date2 = input.parse("2020-10-1"); //截止日期
long time = date2.getTime() - date.getTime(); //获得毫秒,存储在long中
//毫秒除以1000 * 3600 * 24得到天
System.out.print("你的出生日期距离2020年10月1日:" + time/1000/3600/24 + "天");
}
}
第6关:Math类
package case6;
import java.util.Scanner;
import java.lang.Math;
public class MathTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a1 = sc.nextInt();
int a2 = sc.nextInt();
int a3 = sc.nextInt();
int a4 = sc.nextInt();
double a5 = sc.nextDouble();
double a6 = sc.nextDouble();
double a7 = sc.nextDouble();
double a8 = sc.nextDouble();
double a9 = sc.nextDouble();
double a10 = sc.nextDouble();
double a11 = sc.nextDouble();
/********* Begin *********/
System.out.println(Math.sqrt(a1) + "\n" + Math.cbrt(a2) + "\n" + Math.pow(a3,a4) +
"\n" + Math.max(a5,a6) + "\n" + Math.min(a5,a6) + "\n" + Math.abs(a7) + "\n" +
Math.ceil(a8) + "\n" + Math.floor(a9) + "\n" + Math.rint(a10) + "\n" + Math.round(a11));
/********* End *********/
}
}