demo1:机票计价
案例:用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折,11月到来年4月为淡季,头等舱7折,经济舱6.5折请开发程序计算出用户当前机票的优惠价。
package it.heima.cesahihaha;
public class demo1 {
public static void main(String[] args) {
double price = count(10, 1000, "经济舱");
System.out.println("折后价:" + price);
}
public static double count(int month, double price, String type){
//判断是单击还是旺季
// 分别判断舱位并计算价格
if(month <= 10 && month >=5 ){
switch (type) {
case "经济舱" :
price *= 0.5;
break;
case "头等舱" : price *= 0.7;
}
}else{
switch (type) {
case "经济舱" :
price *= 0.9;
break;
case "头等舱" :
price *= 0.8;
break;
}
}
return price;
}
}
demo2: 生成随机数
package it.heima.cesahihaha;
import java.util.Random;
public class demo1 {
public static void main(String[] args) {
String code = coding(5);
System.out.println(code);
}
public static String coding(int n){
String codes = "";
for (int i = 0; i < n; i++) {
Random random = new Random();
int r = random.nextInt(3);
switch(r){
case 0:
int c = random.nextInt(9);
codes += c;
break;
case 1:
int d = random.nextInt(25) + 65;
codes += (char)d;
break;
case 2:
int e= random.nextInt(25) + 97;
codes += (char)e;
break;
}
}
return codes;
}
}
demo3:评委打分案例
需求:在唱歌比赛中,可能有多名评委要给选手打分,分数是[0 - 100]之间的整数。选手最后得分为:去掉最高分、最低分后剩余分数的平均分,请编写程序能够录入多名评委的分数,并算出选手的最终得分
package it.heima.cesahihaha;
import com.sun.istack.internal.NotNull;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
// 获取人数
// 传入方法,计算平均分数
// 打印分数
double[] score = scorefunction(6);
System.out.println("去掉一个最高分:"+ score[1] + "去掉一个最低分:"+ score[2] + "最后平均分:"+score[0]);
}
public static double[] scorefunction(@NotNull int n){
// 遍历n次获取输入分数
// 根据每次输入分数,找出极值
// 全部输入求和,减去极值,计算平均
// 返回分数
Scanner scanner = new Scanner(System.in);
double max = 0.;
double min = 0.;
double scoreavg = 0.0;
for (int i = 0; i < n; i++) {
double input = scanner.nextDouble();
if(i==0){
max = input;
min = input;
}
if(input > max){
max = input;
}
if (input < min){
min = input;
}
scoreavg += input;
}
scoreavg -= (min+max);
scoreavg = scoreavg/(n-2);
double[] values = new double[3];
values[0] = scoreavg;
values[1] = max;
values[2] = min;
return values;
}
}
java方法前面 @NotNull是干什么的,如何工作?
在Java中,@NotNull是一个用于注解方法参数、字段或返回值的标记。它用于指示某个元素(参数、字段或返回值)不能为null。这个注解的目的是为了提高代码的可靠性和可读性,通过明确表示某个元素不能为空,可以减少潜在的空指针异常。
@NotNull注解本身并不会改变代码的行为或实际上进行任何运行时的检查。它只是一种元数据,用于提供额外的信息给开发工具、静态分析器或其他相关工具。这些工具可以读取这些注解,并根据注解的要求进行验证、警告或错误报告。
例如,使用带有@NotNull注解的参数时,开发工具可以静态分析代码并检查是否有可能传递null值给该参数。如果发现潜在的问题,开发工具可以发出警告或错误,以帮助开发人员及早发现问题。
这里是一个示例代码,演示了如何使用@NotNull注解
public class Example {
public void processUser(@NotNull String userName) {
// 方法体省略
}
}
在上述代码中,processUser方法的userName参数被标记为@NotNull,意味着该参数不能为null。开发工具可以根据这个注解来验证方法的调用是否遵守这个要求。
请注意,@NotNull注解不是Java语言的原生注解,它通常是由第三方库或框架提供的。在实际使用时,你需要使用支持该注解的工具或库,并确保在构建和分析过程中启用了相应的检查。
demo4:数字加密
package it.heima.cesahihaha;
import java.util.Arrays;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
// 获取一个数字a
// 传给加密程序f
// 输出加密后的数字b
// 对数字b进行解密得到结果c
// 输出ac是否相等
Scanner scanner = new Scanner(System.in);
System.out.println("输入原码:");
while(true) {
int sc = scanner.nextInt();
if (sc < 0) {
System.out.println("请输入大于0的数字:");
}else{
int[] b = jiami(sc);
System.out.println("密文:" + Arrays.toString(b));
int[] c = jiemi(b);
System.out.println("解码:" + Arrays.toString(c));
juge(sc, c);
break;
}
}
}
public static int[] jiami(int a){
// 输入数字a
// 加密
//输出加密后的数字b
int[] list = number2list(a);
System.out.println("原码转成数组 :"+Arrays.toString(list));
int index = list.length;
// System.out.println("length: " + index);
int[] reverlist = new int[index];
for (int i = 0; i < index; i++) {
reverlist[index-1-i] = jia(list[i]);
}
return reverlist;
}
// public static int list2number(int[] list){
// int len = list.length;
// int chen = 1;
// int sum = 0;
// for (int i = 0; i < len; i++) {
// sum += list[len-1-i] * chen;
// chen *= 10;
// }
// return sum;
// }
public static int[] number2list(int a){
// 判断数字长度
int index = 1;
int chushu = 1;
while(true){
chushu *= 10;
index += 1;
if ((a / chushu)<10){
break;
}
}
System.out.println("长度:"+index);
// 数组存值
int[] list = new int[index];
for (int i = 0; i < index ; i++) {
int a1 = a % 10;
list[index-1-i] = a1;
a /= 10;
}
return list;
}
public static int jia(int e){
return (e + 5) %10;
}
public static int jie(int e){
if (e > 4){
return e-5;
}else{
return e+10-5;
}
}
public static int[] jiemi(int[] b){
// 输入数字b
// 解密
// 输出解密数字c
int[] list = b;
int len = list.length;
int[] reverlist = new int[len];
for (int i = 0; i < len; i++) {
reverlist[len-1-i] = jie(list[i]);
}
return reverlist;
}
public static void juge(int a, int[] c){
// 返回布尔
int[] t0 = number2list(a);
System.out.println("判断时c数组 :"+Arrays.toString(c));
for (int i = 0; i < t0.length; i++) {
if (t0[i] != c[i]){
System.out.println("决策:" + false);
return;
}
}
System.out.println("决策:" + true);
}
}
测试
输入原码:
1234567890
长度:10
原码转成数组 :[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
密文:[5, 4, 3, 2, 1, 0, 9, 8, 7, 6]
解码:[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
长度:10
判断时c数组 :[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
决策:true
上面的代码也存在一些漏洞,伙计们自行研究吧!
简介java中split用法
在Java中,split()是一个用于字符串分割的方法。它接收一个正则表达式作为参数,并将字符串分割成一个字符串数组。
下面是split()方法的语法:
public String[] split(String regex)
参数说明:
regex:表示用于分割字符串的正则表达式。
返回值:
String[]:包含分割后的子字符串的数组。
示例用法:
String str = "Hello,World,Java";
String[] parts = str.split(","); // 使用逗号作为分割符
在上面的示例中,原始字符串"Hello,World,Java"通过split(“,”)方法使用逗号作为分割符进行分割,将被分割成一个包含三个子字符串的数组:[“Hello”, “World”, “Java”]。
注意事项:
split()方法中的参数可以是任何合法的正则表达式。例如,如果你想使用句点作为分割符,可以使用".“作为参数。
如果正则表达式中含有特殊字符,需要使用双斜杠”\“进行转义。例如,如果要使用斜杠作为分割符,可以使用”\“作为参数。
如果想限制分割的次数,可以使用带有限制次数参数的split()方法。例如,使用split(”,", 2)可以将字符串分割成两部分,而不是分割成多个子字符串。
这就是Java中split()方法的简单介绍和用法。使用split()方法可以方便地将字符串按照指定的分割符进行分割,并得到一个字符串数组。
如何将String “1”转换成int 1 ?
要将字符串 “1” 转换为整数 1,可以使用 Integer 类的静态方法 parseInt()。
下面是一个示例代码:
String str = "1";
int num = Integer.parseInt(str);
在上面的代码中,我们使用 Integer.parseInt(str) 将字符串 str 转换为整数类型的变量 num。
需要注意以下几点:
如果字符串不能被解析为有效的整数,例如 “abc”,将抛出 NumberFormatException 异常。因此,在进行转换之前,最好确保字符串可以成功解析为整数。
如果字符串表示的数值超出了整数的范围,也会抛出 NumberFormatException 异常。例如,如果字符串为 “2147483648”,超过了 int 类型的最大值 2147483647。
如果你希望在转换过程中处理异常,可以使用 try-catch 块来捕获 NumberFormatException 异常。
String str = "abc";
try {
int num = Integer.parseInt(str);
System.out.println(num);
} catch (NumberFormatException e) {
System.out.println("无法解析字符串为整数。");
}
上述代码会在无法解析字符串为整数时输出"无法解析字符串为整数。"。
总结起来,要将字符串 “1” 转换为整数 1,可以使用 Integer.parseInt() 方法。
嘿嘿,前面的demo4漏洞改正是:应该自定义number2string、string2number进行转换…