(1)飞机票
package com.wqj;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
//目标:买飞机票
Scanner scanner=new Scanner(System.in);
double price=scanner.nextDouble();
double month=scanner.nextDouble();
String type=scanner.next();
double sum=caculate(price,month,type);
System.out.println("价格为"+sum);
}
public static double caculate ( double price,double month,String type) {
if(month>=5&&month<=10){
switch(type){
case "头等舱":
price *= 0.9;
break;
case "经济舱":
price *= 0.85;
break;
default:
System.out.println("没有你输入的这种舱位");
}
}else {
switch(type){
case "头等舱":
price *= 0.7;
break;
case"经济舱":
price *= 0.65;
break;
default:
System.out.println("没有你输入的这种舱位");
}
}
return price;
}
}
(2)随机排名
package com.wqj;
import java.util.Random;
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
//目标:掌握数组与随机索引之间的互换
Scanner scanner=new Scanner(System.in);
System.out.println("随机排名的个数");
int n=scanner.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=scanner.nextInt();//存入每个排名的值
}
int []array=way(arr);
for(int i=0;i< array.length;i++){
System.out.print(i==array.length-1? array[i]:array[i]+",");//三元运算符末尾不加逗号
}
}
public static int[] way(int[] arr){
for (int i = 0; i < arr.length; i++)
{
Random r=new Random();
int index = r.nextInt(arr.length);
int temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
return arr;
}
}
/*c
静态数组的定义:int[] arr=new int[]{元素,元素,元素};
int []arr={元素,元素}
动态数组的定义:int[] arr=new int[长度]
* */
(3) 生成随机验证码
package com.wqj;
import java.util.Scanner;
import java.util.Random;
public class test3 {
public static void main(String[] args) {
//目标:生成随机验证码,可以是数字,大小字母
Scanner scanner = new Scanner(System.in);
System.out.println("请设置验证码的位数");
int n=scanner.nextInt();
//调用
char[] array=way(n);
//输出结果
for(int i=0;i<array.length;i++) {
System.out.print((i==array.length-1?array[i]:array[i]+","));
}
}
public static char[] way(int n){
char[] arr = new char[n];
Random r = new Random();
for(int i = 0; i < n; i++) {
int m = r.nextInt(3)+1;
switch (m) {
case 1://数字
arr[i]=(char)('0'+r.nextInt(10));//例如:将数字9转化为字符9
break;
case 2://大写字母
arr[i]=(char)(r.nextInt(26)+65);
break;
case 3://小写字母
arr[i]=(char)(r.nextInt(26)+97);
break;
}
}
return arr;
}
}
/*
另一种方法:
不用数组,用一个字符串code来存储
case 条件一: code+=(char)(r.nextInt());
这样就可以不用‘0’连接了
知识点
int n = 9;
char c = (char) (n + '0'); // 等价于 (char) (9 + 48),结果是 (char) 57,即 '9'
* */
(4) 评委随机打分(去掉最低和最高)
package com.wqj;
import javax.swing.plaf.synth.SynthOptionPaneUI;
import java.util.Scanner;
import java.util.Random;
public class test4 {
public static void main(String[] args) {
//目标:多个评委随机打分,范围为0到100,最后去掉一个最高分和最低分,求选手的平均成绩。
Scanner scanner = new Scanner(System.in);
System.out.println("请输入评委的人数");
int n = scanner.nextInt();
//调用
double aver=way(n);
System.out.println("选手的平均成绩为"+aver);
}
public static double way(int n) {
int[] arr=new int[n];
int sum=0,max=0,min=0;
double average=0;
Random r=new Random();
for(int i=0;i<n;i++){
int m=r.nextInt(101);
arr[i]=m;
sum=sum+arr[i];
} ///23 56 4 78 99
max=arr[0];
min=arr[0];
for (int i = 0; i <n ; i++) {
if(arr[i]>max){
max=arr[i];
}else{
min=arr[i];
}
}
for (int i = 0; i < n; i++) {
System.out.println("第"+(i+1)+"个评委的成绩:"+(i==arr.length-1?arr[i]:arr[i]+","));
}
sum=sum-max-min;
average=sum*1.0/(n-2);
return average;
}
}
(5)密码加密
package com.wqj;
import java.util.Scanner;
import java.util.Random;
public class test5 {
public static void main(String[] args) {
//目标;对一个n位数的密码进行加密,每位数加5,再对10取余,最后将所有数字取反,得到一串新密码
Scanner scanner=new Scanner(System.in);
System.out.println("密码的位数:");
int n=scanner.nextInt();
int[] arr=new int [n];
System.out.println("初始的密码:");
for (int i = 0; i < n; i++) {
arr[i]=scanner.nextInt();
}
int[] array=way(arr);
System.out.println("加密后的新密码为");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
public static int[] way(int[] arr){
for (int i = 0; i < arr.length; i++) {
arr[i]+=5;
arr[i]=arr[i]%10;
}
for (int i = 0, j=arr.length-1; i <=(arr.length/2); i++,j--) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
return arr;
}
}
(6)拷贝数组
package com.wqj;
public class test6 {
public static void main(String[] args) {
//目标:请把一个整形数组一摸一样的拷贝给另一个数组(开辟出另一个数组对象,堆内存中也有对应的区域)
int[] arr=new int[]{99,55,77,33};
int[] array=new int[arr.length];
for (int i = 0; i < arr.length; i++) {
array[i]=arr[i];
System.out.println(array[i]);
}
}
}
/*
另一种
int[] array=arr;注意;这个不是拷贝数组,是把该数组变量赋值给另一个数组变量,俩个数组指向同一个数组对象,在堆内存中只开辟了一块区域
改变一个,另一个也会受影响。
* */
(7) 发红包
package com.wqj;
import java.util.Scanner;
import java.util.Random;
public class test7 {
public static void main(String[] args) {
// write your code
System.out.println("请输入红包的数量");
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int[] arr=new int[n];
//System.out.println("请输入红包金额");
for (int i = 0; i <n ; i++) {
System.out.println("设定第"+(i+1)+"个红包金额:");
arr[i]=scanner.nextInt();
}
way(arr);
}
public static void way(int[] arr){
Random r=new Random();
int money;
for (int i = 0; i < arr.length; i++) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入第"+(i+1)+"个中奖嘉宾的幸运号码:");
scanner.nextInt();
while(true) {
int m = r.nextInt(arr.length);
//System.out.println(m);
if (arr[m] != 0) {
money = arr[m];
System.out.println("获得的红包为"+money+"元大礼包"); //注意:这里不可以为arr[i]=arr[m],不然arr[i]会被覆盖为0
// 这里将值存入一个整形变量,直接输出,若将数组返回main在输出,会陆续被零覆盖,所以找到一个输出一个。
arr[m] = 0;//标记过的索引后面不可以用
break;
}
}
}
return ;
}
}
(8) 找素数
package com.wqj;
import java.util.Scanner;
public class test8 {
public static void main(String[] args) {
//目标:找素数 判断100到200之间有多少素数?
//下列方法:核心:找符合条件的素数
// 通过遍历,与1到该值之间除法取余测试,都符合,则为素数
Scanner scanner=new Scanner(System.in);
System.out.println("请输入区间范围n1和n2来表示起始值和最终值");
int n1=scanner.nextInt();
int n2=scanner.nextInt();
int[] arr=new int[(n2-n1+1)];
int count=0;
for (int i = 0; i < arr.length; i++) {
arr[i]=i+n1;
}//存值
for (int i = 0; i < arr.length ; i++) {
if(arr[i]==2){
System.out.println(arr[i]);
count++;
continue;//不进入后面循环,
}
for (int j= 2; j < (arr[i]); j++) {
if ((arr[i]%j)==0) {
break;
}
else if(j==(arr[i]-1)){
System.out.println(arr[i]);
count++;
}
}
}
System.out.print("素数的总数为:"+count);
}
}
/*
* 方法二:核心:排除不是素数的数!(推荐)
* 写一个循环,循环最后放要打印的数值,能走带最后,即为通过测试,是素数
* 测试条件:1到该值之间做除法,等于0,即为失败,跳出循环
* 跳出循环有俩种:
* (1)continue OUT //记得在第一个for之前加标签OUT
* (2)设立一个flag,再break;跳出除法循环,打印条件用if将此拦截
* */
(9)乘法表和三角形
package com.wqj;
import java.util.Scanner;
public class test9 {
public static void main(String[] args) {
//目标:打印输出9X9乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
if (j != i) {
System.out.print(j + "x" + i + "=" + (j * i) + " ");
} else {
System.out.println(j + "x" + i + "=" + (j * i) + " ");
}
}
}
System.out.println("---------------------------------------------------------------------------------------");
/*目标二;打印三角
核心:可以分为好几个循环来看,最外层控制行,内部遍历几个循环,一个打印空格,一个负责打印*
| * 行数 空格 星星
| *** 1 3 1
| ***** 2 2 3
|******* 3 1 5
--------------------------- 4 0 7
n n-i 2i-1
进阶: 将每排星星数的偶数列改为空格
| *
| * *
| * * *
|* * * *
——————————————
*/
Scanner scanner = new Scanner(System.in);
System.out.println("请输入三角的层数:");
int n = scanner.nextInt();//层数
System.out.println("进阶如图:");
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= (n - i); j++) {
System.out.print(" ");
}
for (int j = 1; j <= (2 * i - 1); j++) {
if(j==(2*i-1)) {
System.out.println("*");
}else {
if(j%2!=0) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
}
}
System.out.println("-----------------------------------------------------------------------------------");
}
}
(10) 福利双色球
package com.wqj;
import java.util.Scanner;
import java.util.Random;
public class test10 {
public static void main(String[] args) {
//目标:模拟双色球案例:
// 红球范围为1—33,蓝球范围是1-16
int[] arr=new int[7];//红色球+蓝色球
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你的中奖号码");
for (int i=0;i<arr.length;i++) {
while(true){
System.out.println("请输入第"+(i+1)+"个号码");
int number=scanner.nextInt();
if (i!=arr.length-1) {//红球
if(number<1||number>33){
System.out.println("你输入的第"+(i+1)+"个号码超出范围,重新输入");
}else{
if(!exist(arr,number)){
arr[i]=number;
break;
}else {
System.out.println("你输入的第"+(i+1)+"个号码与之前的重复了,请重新输入");
};
}
}else {//蓝球
if(number<1||number>16){
System.out.println("你输入的第"+(i+1)+"个号码超出范围,重新输入");
}else{
arr[i]=number;
break;
}
}
}
}
int count=0;
count=way(arr);
switch(count){
case 61:
System.out.println("恭喜你中大奖啦,喜提1000万奖金");
break;
case 60:
System.out.println("恭喜你中大奖啦,喜提500万奖金");
break;
case 51:
System.out.println("恭喜你中大奖啦,喜提3000奖金");
break;
case 50:
case 41:
System.out.println("恭喜你中大奖啦,200奖金");
break;
case 40:
case 31:
case 21:
System.out.println("恭喜你中大奖啦,喜提10元奖金");
break;
case 11:
case 1:
System.out.println("恭喜你中大奖啦,喜提5元奖金");
break;
default:
System.out.println("很遗憾你这次运气尚佳,没有获奖");
}
}
public static int way(int[] arr){
Random r=new Random();
int red=0,blue=0,sum=0;
int[] array=new int[arr.length];
//(官方)系统设定的中奖号码
for (int i = 0; i < arr.length; i++) {
while (true) {
if(i!=array.length-1) {
int number = r.nextInt(33) + 1;//红球
if(!exist(array,number)){
array[i]=number;
break;
}
}else {
array[i]=r.nextInt(16)+1;//蓝球
break;
}
}
}
//进行对比,得出获奖的球数
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if(i!=arr.length-1){//红球进行匹配
if(arr[i]==array[j]) {
red++;
break;
}
}else{//篮球进行匹配
if(arr[i]==array[j]){
blue++;
break;
}
}
}
}
//记录结果
sum=red*10+blue;
return sum;
}
//检测号码是否与之前输入的号码重复
public static boolean exist(int[] arr,int number){
int flag=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]==number){
flag=1;
break;
}
}
if(flag==1){
return true;
}else {
return false;
}
}
}