建设银行纪念币网站,专业网站设计公司哪里有,中国手工活加工网官网,wdcp wordpress 4041.需求#xff1a;#xff08;1#xff09;机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、原价、月份和头等舱或经济舱#xff1b;#xff08;2#xff09;按照如下规则计算机票价格#xff1a;旺季#xff08;5-10月#xff09;头等舱9折#xff0c;经济…1.需求1机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、原价、月份和头等舱或经济舱2按照如下规则计算机票价格旺季5-10月头等舱9折经济舱8.5折淡季11月到来年4月头等舱7折经济舱6.5折
import java.util.Scanner;public class demo {public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 提示用户输入机票原价System.out.print(请输入机票原价);double originalPrice scanner.nextDouble();// 提示用户输入月份System.out.print(请输入出行月份1 - 12);int month scanner.nextInt();// 提示用户输入舱位类型System.out.print(请输入舱位类型头等舱/经济舱);String cabinClass scanner.next();// 调用 calculatePrice 方法计算最终机票价格double finalPrice calculatePrice(originalPrice, month, cabinClass);// 输出最终机票价格System.out.println(最终机票价格为 finalPrice 元);scanner.close();}/*** 计算机票最终价格的方法* param originalPrice 机票原价* param month 出行月份* param cabinClass 舱位类型* return 最终机票价格*/public static double calculatePrice(double originalPrice, int month, String cabinClass) {double discount 1.0;// 判断是否为旺季5 - 10 月if (month 5 month 10) {if (头等舱.equals(cabinClass)) {discount 0.9; // 旺季头等舱 9 折} else if (经济舱.equals(cabinClass)) {discount 0.85; // 旺季经济舱 8.5 折}} else {if (头等舱.equals(cabinClass)) {discount 0.7; // 淡季头等舱 7 折} else if (经济舱.equals(cabinClass)) {discount 0.65; // 淡季经济舱 6.5 折}}// 计算最终价格return originalPrice * discount;}
} 2.判断101~200之间有多少个素数并输出所有素数
public class demo {public static void main(String[] args) {int count 0; // 用于统计素数的个数// 遍历 101 到 200 之间的所有数for (int i 101; i 200; i) {if (isPrime(i)) { // 判断当前数是否为素数System.out.print(i ); // 输出素数count; // 素数个数加 1}}System.out.println(\n101~200 之间共有 count 个素数。);}// 判断一个数是否为素数public static boolean isPrime(int num) {if (num 1) {return false; // 小于等于 1 的数不是素数}else if (num 2) {return false; // 等于 2 的数不是素数}else if (num % 20) {return false; // 偶数不是素数}// 判断是否能被 3 到 sqrt(num) 之间的数整除for (int i 3; i Math.sqrt(num); i) {if (num % i 0) {return false; // 如果能被整除则不是素数}}return true; // 否则是素数}
} 3.需求1定义方法实现随机产生一个5位的验证码2验证码格式a长度为5b前四位是大写字母或者小写字母c最后一位是数字
import java.util.Random;public class demo {public static void main(String[] args) {String code generateVerificationCode(); // 生成验证码System.out.println(生成的验证码是: code); // 输出验证码}// 生成验证码的方法public static String generateVerificationCode() {Random random new Random();StringBuilder code new StringBuilder();// 生成前四位字母for (int i 0; i 4; i) {// 随机选择大写字母或小写字母boolean isUpperCase random.nextBoolean(); // 随机决定是否大写char letter;if (isUpperCase) {letter (char) (random.nextInt(26) A); // 生成大写字母} else {letter (char) (random.nextInt(26) a); // 生成小写字母}code.append(letter); // 将字母添加到验证码中}// 生成最后一位数字char digit (char) (random.nextInt(10) 0); // 生成数字字符code.append(digit); // 将数字添加到验证码中return code.toString(); // 返回生成的验证码}
}
代码说明 generateVerificationCode 方法 使用 Random 类生成随机数。 使用 StringBuilder 来构建验证码字符串。 前四位是随机生成的大写字母或小写字母 random.nextBoolean() 随机决定生成大写字母还是小写字母。 random.nextInt(26) 生成 0 到 25 的随机数加上 A 或 a 的 ASCII 值得到随机字母。 最后一位是随机生成的数字 random.nextInt(10) 生成 0 到 9 的随机数加上 0 的 ASCII 值得到数字字符。 主程序 调用 generateVerificationCode 方法生成验证码。 输出生成的验证码。 char digit (char) (random.nextInt(10) 0) 如果这一句不加0,会怎么样
如果去掉 0代码会变成
char digit (char) (random.nextInt(10));
这行代码的作用是将 random.nextInt(10) 生成的随机整数0 到 9强制转换为 char 类型。但是这样的转换会导致 数字字符 变成 ASCII 控制字符而不是我们期望的 0 到 9 的数字字符。 为什么需要加 0 random.nextInt(10)生成一个 0 到 9 的随机整数。 0是字符 0 的 ASCII 值48。 random.nextInt(10) 0 将随机整数加上 0 的 ASCII 值得到 0 到 9 的 ASCII 值。 例如 如果 random.nextInt(10) 生成 0则 0 0 等于 48对应字符 0。 如果生成 5则 5 0 等于 53对应字符 5。 如果生成 9则 9 0 等于 57对应字符 9。 强制转换为 char将 ASCII 值转换为对应的字符。 如果不加 0 会发生什么
如果不加 0代码会直接将 0 到 9 的整数转换为对应的 ASCII 字符。ASCII 表中0 到 9 的整数值对应的是 控制字符而不是数字字符。 ASCII 表部分内容 整数值字符描述0\u0000空字符NULL1\u0001标题开始SOH2\u0002文本开始STX.........9\u0009水平制表符TAB 结果 如果 random.nextInt(10) 生成 0则 (char) 0 是空字符\u0000。 如果生成 5则 (char) 5 是控制字符\u0005。 这些字符是不可见的或者显示为乱码。 示例代码
import java.util.Random;public class Test {public static void main(String[] args) {Random random new Random();// 不加 0char digit1 (char) (random.nextInt(10));System.out.println(不加 0 的结果: digit1);// 加 0char digit2 (char) (random.nextInt(10) 0);System.out.println(加 0 的结果: digit2);}
} 输出结果 不加 0 的结果: 不可见字符或乱码
加 0 的结果: 5 总结 加 0将 0 到 9 的整数转换为对应的数字字符0 到 9。 不加 0将 0 到 9 的整数转换为 ASCII 控制字符这些字符不可见或显示为乱码。 Random random new Random();
在 Java 中Random random new Random(); 这行代码的作用是创建一个 Random 类的对象用于生成伪随机数。下面详细解释这行代码涉及的各个部分
1. Random 类
Random 类是 Java 标准库中 java.util 包下的一个类它提供了多种方法用于生成不同类型的伪随机数。所谓伪随机数是指这些数看起来是随机的但实际上是由一个确定的算法根据初始种子seed生成的只要种子相同生成的随机数序列就是相同的。
2. new Random()
new 是 Java 中用于创建对象的关键字。当使用 new 时Java 会在内存中为对象分配空间并调用相应类的构造函数来初始化对象。Random() 是 Random 类的一个构造函数。如果使用无参构造函数 Random() 来创建 Random 对象Java 会使用当前系统时间的毫秒数作为种子来初始化随机数生成器这样每次运行程序时由于系统时间不同生成的随机数序列通常也会不同。
3. Random random
这部分声明了一个名为 random 的变量其类型为 Random。变量就像是一个容器用于存储对象的引用。通过这个变量 random我们可以调用 Random 类提供的各种方法来生成随机数。
总结
Random random new Random(); 这行代码创建了一个 Random 对象通过这个对象可以方便地调用 Random 类的方法来生成各种类型的伪随机数满足不同的编程需求比如模拟随机事件、生成随机密码等。 boolean isUpperCase random.nextBoolean();
在 Java 中boolean isUpperCase random.nextBoolean(); 这行代码主要完成了两件事一是调用 Random 类的 nextBoolean() 方法生成一个随机的布尔值二是将这个随机布尔值存储到一个名为 isUpperCase 的布尔类型变量中。下面详细解释这行代码
1. Random 对象
在执行这行代码之前通常会有类似 Random random new Random(); 的代码它创建了一个 Random 类的对象 random。Random 类是 Java 标准库 java.util 包中的一个类用于生成伪随机数。借助这个对象可以调用 Random 类提供的各种方法来生成不同类型的随机数。
2. nextBoolean() 方法
nextBoolean() 是 Random 类中的一个方法其作用是生成一个随机的布尔值。该方法会等概率地返回 true 或者 false也就是说返回 true 和 false 的可能性均为 50%。
3. boolean isUpperCase
这部分声明了一个名为 isUpperCase 的变量其类型为 boolean。在 Java 里boolean 类型的变量只能存储两个值true 或者 false。
4. 代码整体含义
整行代码 boolean isUpperCase random.nextBoolean(); 的意思是调用 random 对象的 nextBoolean() 方法生成一个随机的布尔值然后将这个布尔值赋值给变量 isUpperCase。此后就可以在代码中使用 isUpperCase 变量进行条件判断等操作。 letter (char) (random.nextInt(26) A);
letter (char) (random.nextInt(26) A); 这行代码的主要目的是生成一个随机的大写英文字母并将其赋值给变量 letter。下面我们逐步拆解这行代码详细解释其具体含义
1. random 对象
在执行这行代码之前通常会有类似 Random random new Random(); 的代码它创建了一个 Random 类的对象 random。Random 类是 Java 标准库 java.util 包中的一个类用于生成伪随机数。通过这个对象我们可以调用 Random 类提供的各种方法来生成不同类型的随机数。
2. random.nextInt(26)
nextInt(int bound) 是 Random 类的一个方法它的作用是生成一个大于等于 0 且小于指定边界 bound 的随机整数。在这行代码中bound 的值为 26所以 random.nextInt(26) 会生成一个范围在 0包含到 26不包含之间的随机整数即可能的取值为 0、1、2、...、25。
3. A
在 Java 中字符类型 char 本质上是一个 16 位的无符号整数它可以表示 Unicode 字符集中的字符。每个字符都对应一个唯一的 Unicode 码点。字符 A 的 Unicode 码点是 65B 是 66以此类推Z 是 90。
4. random.nextInt(26) A
将 random.nextInt(26) 生成的随机整数范围是 0 - 25与字符 A 的 Unicode 码点65相加。这样得到的结果范围是 65即 A 的码点到 90即 Z 的码点之间的整数。例如如果 random.nextInt(26) 生成的随机数是 0那么 0 A 就等于 65如果生成的随机数是 25那么 25 A 就等于 90。
5. (char)
这是一个强制类型转换操作符。由于 random.nextInt(26) A 的结果是一个 int 类型的整数而我们需要的是一个字符所以使用 (char) 将这个整数强制转换为 char 类型。这样得到的就是一个对应的大写英文字母。 StringBuilder code new StringBuilder();
在 Java 中StringBuilder code new StringBuilder(); 这行代码的作用是创建一个 StringBuilder 类的对象并将其引用赋值给名为 code 的变量。下面详细解释这行代码涉及的各个部分
1. StringBuilder 类
StringBuilder 是 Java 标准库中 java.lang 包下的一个类用于处理可变的字符序列。与 String 类不同String 对象是不可变的一旦创建其内容就不能被修改如果对 String 进行拼接、删除等操作实际上是创建了一个新的 String 对象而 StringBuilder 对象的内容是可以动态改变的在进行字符串拼接、插入、删除等操作时不会创建新的对象而是直接在原对象的基础上进行修改因此在需要频繁修改字符串内容的场景下使用 StringBuilder 效率更高。
2. new StringBuilder()
new 是 Java 中用于创建对象的关键字。当使用 new 时Java 会在内存中为对象分配空间并调用相应类的构造函数来初始化对象。StringBuilder() 是 StringBuilder 类的无参构造函数使用这个构造函数创建的 StringBuilder 对象初始容量为 16 个字符初始内容为空。
3. StringBuilder code
这部分声明了一个名为 code 的变量其类型为 StringBuilder。变量就像是一个容器用于存储对象的引用。通过这个变量 code我们可以调用 StringBuilder 类提供的各种方法来对其内部的字符序列进行操作例如追加字符、插入字符、删除字符等。 return code.toString();
return code.toString(); 这行代码在 Java 里是一个方法返回语句它主要做了两件事一是调用 code 对象的 toString() 方法把 code 对象转换为字符串二是将转换后的字符串作为方法的返回值返回。下面详细解释这行代码
1. code 对象
从前面的代码可知code 通常是一个 StringBuilder 类型的对象。StringBuilder 是 Java 标准库中用于处理可变字符序列的类在需要频繁修改字符串内容如拼接、插入、删除字符等时使用 StringBuilder 能比直接使用 String 类获得更高的性能。
2. toString() 方法
toString() 是 StringBuilder 类从 Object 类继承并进行了重写的方法。Object 类是 Java 中所有类的基类每个类都有 toString() 方法不过不同类对其有不同的实现。在 StringBuilder 类中toString() 方法的作用是将 StringBuilder 对象内部存储的字符序列转换为一个不可变的 String 对象。这是因为在很多场景下我们最终需要的是一个标准的 String 类型的数据例如将结果输出、传递给其他只接受 String 类型参数的方法等。
3. return 语句
return 是 Java 中的一个关键字用于从方法中返回一个值并终止方法的执行。当程序执行到 return 语句时会将 return 后面表达式的值作为方法的返回值返回给调用该方法的地方。