- 变量、数组
- 运算符:基本运算符、关系运算符、逻辑运算符......
- 程序流程控制:if、switch;for、while;死循环、嵌套循环
- 跳转关键字:break、continue、return。
- 方法等等
public static void main(String[] args) {
//需求:机票价格按淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
//机票的最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折;
// 淡季(11月到来年4月)头等舱7折,经济舱6.5折。
Scanner sc = new Scanner(System.in );
//1、让用户输入机票原价,月份,舱位类型
System.out.println("请输入机票原价: ");
double money = sc.nextDouble();
System.out.println("请输入月份(1-12月): ");
int month = sc.nextInt();
System.out.println("请输入舱位类型:头等舱/经济舱: ");
String type = sc.next();
// 4、调用方法统计结果:
System.out.println("机票优惠后的价格是: " + calc(money,month,type));
}
/**
2、定义方法接收信息,统计优惠后的价格返回
*/
public static double calc(double money , int month , String type){
//3、判断用户选择的信息情况
if (month >= 5 && month <=10){
//旺季
switch (type){
case "头等舱" :
money *=0.9; // money = money * 0.9;
break;
case "经济舱" :
money *=0.85; // money = money * 0.8;
break;
default:
System.out.println("您输入的舱位类型有误--");
money = -1; //表示当前无法计算价格!
}
}else if (month == 11||month == 12 || month >=1 && month <=4){
//淡季
switch (type) {
case "头等舱":
money *= 0.7; // money = money * 0.7;
break;
case "经济舱":
money *= 0.65; // money = money * 0065;
break;
default:
System.out.println("您输入的舱位类型有误--");
money = -1; // 表示当前无法计算价格!
}
}else{
System.out.println("对不起,您输入的月份有问题---");
money = -1; // 表示当前无法计算价格!
}
return money; //最终的价格。
}
/*
分析:101-200采用循环可以拿到,每拿到一个数,判断它是否是素数
判断规则:从2开始遍历到该数字的一半的数据,看有没有数据能整除它,如果有,不是素数;如果没有,是素数。
*/
public static void main(String[] args) {
// 1、定义一个循环,找到101 到200之间的全部数据
for (int i = 101; i <= 200; i++) {
// i= 101 102 。。。。。200
//信号位:标记
boolean flag = true;//一开始认为当前数据是素数。
//2、判断当前遍历的这个数据是否是素数
for (int j = 2; j < i/ 2; j++) {
if (i % j == 0){
flag = false;
break;
}
}
//3、根据判断的结果选择是否输出这个数据,是素数则输出
if (flag){
System.out.print(i + "\t");
}
}
}
分析:1、定义一个方法,生成验证码返回:方法参数是位数,方法的返回值类型是String。
2、方法内部,使用for循环生成指定位数的随机字符,并连接。
3、把连接好的随机字符作为一组验证码返回
*/
public static void main(String[] args) {
//5、调用生成验证码的方法
String code = Code(5);
System.out.println("生成验证码是:" + code);
// System.out.println(Code(5));//简写
}
//1、定义一个方法,生成验证码返回,方法参数为:int a 返回值类型为String。
//num指的是几位验证码
public static String Code (int a ){
//定义一个字符串接随机生成的字母或数字
String code = "";
//2、遍历num位数的随机字符char
for (int i = 0; i < a; i++) {
Random r = new Random();
//3、随机生成三种(数字1,大写字母2,小写字母3)
int type = r.nextInt(3)+1;
//4、使用switch,1时生成数字,2时生成大写字母,3时生成小写字母。
switch (type){
case 1:
code += r.nextInt(10);//0-9
break;
case 2:
//使用强制类型转换,转换成char类型。
char letter1 = (char)(r.nextInt(26)+65);//大写字符(A:65 Z:65+25) (0-25) + 65
code += letter1;
break;
case 3:
//使用强制类型转换,转换成char类型。
char letter2 = (char)(r.nextInt(26)+97);//小写字符(a:97 z:97+25) (0-25) + 97
code += letter2;
break;
}
}
return code;
}
分析:1、定义一个打印数组的方法
2、定义一个复制数组的方法。输入原始数组的长度,将原始数组的元素复制给新数组
两个方法都没有返回值类型
3、调用方法实现数组复制
*/
public static void main(String[] args) {
int arr1 [] = {11,22,33,44,55,66};
int arr2 [] = new int[arr1.length];
copy(arr1,arr2);
printArray(arr1);
printArray(arr2);
}
//1、打印数组的方法
public static void printArray(int arr[]){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");//\t代表空格的意思。
}
System.out.println("]");
}
//2、复制的方法
//a是指数组的长度
public static void copy(int arr1[] , int arr2 []){
//数组复制
for (int i = 0; i < arr2.length; i++) {
arr2[i] = arr1[i];
}
}
/**
* 分析:1、使用数组,接到六名评委的打分分数范围为0-100
* 2、定义变量:得分之和sum,最高分max,最低分min
* 遍历数组,求和。在找出最高分和最低分
* 3、输出最后得分为sum - max - min /数组长度-2
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//1、定义一个长度为6的数组
int array [] = new int[6];
//2、遍历数组,输入打的分数
for (int i = 0; i < array.length; i++) {
System.out.println("输入第" + (i+1) + "位评委的打分(0-100之间的整数):");
array[i] = sc.nextInt();//把输入的数,存入到相应索引的位置上去。
}
printArray(array);//可以打印出来数组看一下。
//3、定义变量:得分之和sum,最高分max,最低分min
int sum = 0;
int max = array[0];
int min = array[0];//默认最大值和最小值都是数组里的第一个值。
for (int i = 0; i < array.length; i++) {
sum += array[i];//遍历数组求和
//找数组里的最大值:
if (array[i] > max){
max = array[i];//替换最大值变量里的值
}
//找数组里的最小值:
if (array[i] < min){
min = array[i];//替换最小值变量里的值
}
}
//4、统计平均分即可
double result = (sum - max - min) / (array.length-2);
System.out.println("去掉一个最高分,去掉一个最低分,选手的最后得分为:" + result);
}
//打印数组的方法
public static void printArray(int arr[]){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");//\t代表空格的意思。
}
System.out.println("]");
}
/**
* 1 9 8 3
* +5 6 14 13 8
* %10 6 4 3 8
* 反转 8 3 4 6
*/
/*、
思考,如何给数字解密呢???
*/
public static void main(String[] args) {
//1、定义一个数组存入要加密的数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要加密的数字的位数:");
int num = sc.nextInt();
//定义一个num位长度的数组
int array [] = new int[num];
//2、遍历数组将要加密的数字放进去
for (int i = 0; i < array.length; i++) {
System.out.println("请输入要加密的第" + (i+1) + "个数字(1-9):");
array[i] = sc.nextInt();
}
// printArray(array);//可以打印出来数组看一下//[1 9 8 3 ]
//3、将数组中的数字进行加密
for (int i = 0; i < array.length; i++) {
//每位数加5
array[i] += 5;
//对10取余
array[i] %= 10;
}
// printArray(array);//[6 4 3 8 ]
// i j
//4、将所有数字反转(换数组元素的位置)重点
//定义两个变量i和j ,分别在数组的首尾位置
//i变量往后走,j变量往前走,同步交换双方位置处的值
//当i < j时停止交换。
for (int i = 0 , j = array.length-1 ; i < j; i++ , j--) {
//交换两者位置的值。
int temp = array[j];
array[j] = array[i];
array[i] = temp;
}
printArray(array);//[8 3 4 6 ]
}
//打印数组的方法
public static void printArray(int arr[]){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");//\t代表空格的意思。
}
System.out.println("]");
}
//1、随机生成一组中奖号码的方法
//2、定义一个用户输入投注号码的方法
//3、对比用户投注号码与中奖号码,得到命中红球和蓝球的个数
//4、根据命中个数输出获得什么奖项
public static void main(String[] args) {
//1、
int [] luckNumber = winningNumber();
//2、
int [] userNumber = usersNumber();
//3、
result(luckNumber,userNumber);
}
//3、对比用户投注号码与中奖号码,得到命中红球和蓝球的个数,根据命中个数输出获得什么奖项
public static void result (int[] arr1 , int [] arr2){
/*
对比用户投注号码与中奖号码
[24 33 18 13 9 32 8 ]
[24 33 18 13 9 32 8 ]
*/
//用两个变量接红球和蓝球个数
int redBallNum = 0;
int blueBallNum = 0;
//比较红球号码相同的个数
for (int i = 0; i < arr1.length-1; i++) {
for (int j = 0; j < arr2.length-1; j++) {
if (arr1[i] == arr2[j]){
redBallNum += 1;
break;
}
}
}
//判断蓝球相同不
/*if (arr1[arr1.length-1] == arr2[arr2.length-1]){
blueBallNum = 1;
}else{
blueBallNum = 0;
}*/
blueBallNum = arr1[arr1.length-1] == arr2[arr2.length-1] ? 1 : 0 ;
System.out.println("中奖号码是:");
printArray(winningNumber());//打印随机的中奖号码看一下
System.out.println("您投注的号码是:");
printArray(usersNumber());//打印用户投注的号码看一下
System.out.println("您命中的红球数量为:" + redBallNum);
System.out.println("您是否命中蓝球:" + (blueBallNum == 1? "是":"否"));
if (redBallNum == 6 && blueBallNum == 1){
System.out.println("恭喜您,中了一等奖,最高1000万。");
}else if (redBallNum == 6 && blueBallNum == 0){
System.out.println("恭喜您,中了二等奖,最高500万。");
}else if (redBallNum == 5 && blueBallNum == 1){
System.out.println("恭喜您,中了三等奖,3000元。");
}else if ((redBallNum == 4 && blueBallNum == 1) || (redBallNum == 5 && blueBallNum == 0)){
System.out.println("恭喜您,中了四等奖,200元。");
}else if ((redBallNum == 3 && blueBallNum == 1) || (redBallNum == 4 && blueBallNum == 0)){
System.out.println("恭喜您,中了五等奖10元。");
}else if (redBallNum < 3){
System.out.println("恭喜您,中了六等奖5元。");
}else{
System.out.println("感谢你为彩票事业做出的贡献,您本次没有中奖。");
}
}
//2、定义一个用户输入投注号码的方法
public static int [] usersNumber(){
//1、定义一个7位的数组接用户猜测的七位数字
int [] numbers = new int[7];
//2、用户输入猜测的红球数字
Scanner sc = new Scanner(System.in);
for (int i = 0; i < numbers.length-1; i++) {
System.out.println("请输入您猜测的第" +(i+1)+ "个红球数字(1-33)(要求不重复):");
numbers[i] = sc.nextInt();
}
//2、用户输入猜测的蓝球数字
System.out.println("请输入您猜测的蓝球数字(1-16):");
numbers[numbers.length-1] = sc.nextInt();
return numbers;
}
//1、随机生成一组中奖号码的方法
public static int [] winningNumber(){
Random r = new Random();
//1、定义一个数组接一个中奖的七位号码
int numbers [] = new int[7];
//2、遍历数组,随机生成中奖的号码(红球)(1-33):
for (int i = 0; i < numbers.length-1; i++) {
/* numbers[i] = r.nextInt(33)+1;
//判断它是否重复方法1
for (int j = 0; j < i; j++) {
if (numbers[i] == numbers[j]){
i--;
break;
}
}*/
//判断是否重复方法2
while (true){
//定义一个临时数据生成随机数
int data = r.nextInt(33)+1;
//定义一个标记位
Boolean flag = true;
for (int j = 0; j < i; j++) {
if (data == numbers[j]){
//数字重复时,输出false
flag = false;
break;
}
}
//说明没有重复数字,可以将数据放到数组里去了
if (flag){
numbers[i] = data;
break;
}
}
}
//3、随机生成中奖的蓝球号码
numbers[numbers.length-1] = r.nextInt(16) + 1;
return numbers;
}
//打印数组的方法
public static void printArray(int arr[]){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");//\t代表空格的意思。
}
System.out.println("]");
}
使用GUI的JOptionPane方法:
大家可以看这位博主写的,链接如下:
JOptionPane总结_flying_coder的博客-CSDN博客_joptionpane最近在做swing程序中遇到使用消息提示框的,JOptionPane类其中封装了很多的方法。很方便的,于是就简单的整理了一下。1.1 showMessageDialog 显示一个带有OK按钮的模态对话框。下面是几个使用showMessageDialog的例子:Java代码 JOptionPane.showMessageDialog(null, "友情提示"https://blog.csdn.net/qwezhaohaihong/article/details/78668549
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"* * * * * *欢迎使用学员状态转换器* * * * * *");
input();
}
//定义一个输入学员状态的方法
public static void input(){
String letter = JOptionPane.showInputDialog("请输入学员状态的英文单词:");
//使用switch循环
switch (letter){
case "E":
case"e":
JOptionPane.showMessageDialog(null,"优");
isBack();
break;
case "G":
case "g":
JOptionPane.showMessageDialog(null,"良");
isBack();
break;
case "S":
case "s":
JOptionPane.showMessageDialog(null,"中");
isBack();
break;
case "F":
case "f":
JOptionPane.showMessageDialog(null,"差");
isBack();
break;
default:
JOptionPane.showMessageDialog(null,"输入错误,无法转换");
}
}
//定义一个您想继续吗(是否退出)的方法
public static void isBack(){
String letter = JOptionPane.showInputDialog("您想继续吗?(y(继续)/n(退出系统))");
if (letter.equals("y")){
input();
}else if (letter.equals("n")){
JOptionPane.showMessageDialog(null,"退出系统");
}else{
JOptionPane.showMessageDialog(null,"输入错误,请重新输入:");
isBack();
}
}