1.Scanner
Scanner input = new Scanner(System.in);
2.if-else
2.1 运行结果
b(true不等于flase)
c(flase赋值给b !true)
2.2 彩票游戏
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。 2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。 3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。 4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。 5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
提示:使用Math.random() 产生随机数
Math.random() 产生[0,1)范围的随机值
Math.random() * 90:[0,90)
Math.random() * 90 + 10:[10,100) 即得到 [10,99]
使用(int)(Math.random() * 90 + 10)产生一个两位数的随机数。
package package01;
import java.util.Scanner;
public class TestDay0207 {
/*
彩票游戏
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
提示:使用Math.random() 产生随机数
Math.random() 产生[0,1)范围的随机值
Math.random() * 90:[0,90)
Math.random() * 90 + 10:[10,100) 即得到 [10,99]
使用(int)(Math.random() * 90 + 10)产生一个两位数的随机数。
*/
public static void main(String[] args) {
//1、随机产生一个两位数
int number = (int)(Math.random()*90 + 10);//得到[10,99],即[10,100)
System.out.println(number);
int numberShi = number/10;//十位数
int numberGe = number%10;//个位数
//2、用户输入一个两位数
Scanner input = new Scanner(System.in);
System.out.print("请输入一个两位数:");
int guess = input.nextInt();
int guessShi = guess/10;
int guessGe = guess%10;
if(number==guess) {
System.out.print("奖金10000美元");
}else if(numberShi==guessGe&&numberGe==guessShi) {
System.out.print("奖金3000美元");
}else if(numberShi==guessShi||numberGe==guessGe) {
System.out.print("奖金1000美元");
}else if(numberShi==guessGe||numberGe==guessShi) {
System.out.print("奖金500美元");
}else {
System.out.print("彩票作废");
}
}
}
多粘贴了一个题。
/*
随机生成一个100以内的数,猜数字游戏:
从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次?
提示:随机数
import java.util.Random;
Random rand = new Random();
int num= rand.nextInt(100);
*/
public static void main(String[] args) {
Random rand = new Random();
int num= rand.nextInt(100);
System.out.println(num);
Scanner input = new Scanner(System.in);
int guess;
int count = 0;
do {
System.out.println("请输入一个整数:");
guess=input.nextInt();
count++;
if(num < guess) {
System.out.println("大了");
}else if(num > guess) {
System.out.println("小了");
}else if(num == guess) {
System.out.println("猜对了");
}
}while(guess!=num);
System.out.println(count);
}
3.switch-case
3.1从键盘分别输入年、月、日,判断这一天是当年的第几天。
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("年:");
int year = input.nextInt();
System.out.print("月:");
int month = input.nextInt();
System.out.print("日:");
int day = input.nextInt();
int days = day;
//加前面几个月的满月天数
switch(month){
case 12:
//前面11个月的总天数
//days += 第11月的天数;
days += 30;
case 11:
//前面10个月的总天数
//days += 第10月的天数;
days += 31;
case 10:
days += 30;//九月
case 9:
days += 31;//八月
case 8:
days += 31;//七月
case 7:
days += 30;//六月
case 6:
days += 31;//五月
case 5:
days += 30;//四月
case 4:
days += 31;//三月
case 3:
days += 28;//二月
/*if(闰年){
days++;
}
*/
if(year % 4 ==0 && year % 100 != 0 || year%400==0){
days++;
}
case 2:
days += 31;//一月
}
System.out.println(year + "年" + month + "月" + day + "日是这一年的第" + days + "天");
/*
int days = 0;
switch(month){
case 1:
days = day;
break;
case 2:
days = 31 + day;
break;
case 3:
//days = 31 + 二月的天数 + day;
days = 31 + 28 + day;
break;
case 4:
//days = 31 + 二月的天数 + 31 + day;
days = 31 + 28 + 31 + day;
break;
....
}
if(闰年 && month >2){
days++;
}
*/
}
3.2 根据指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
public static void main(String[] args){
Scanner input =new Scanner(System.in);
System.out.println("请输入当前月份:");
int month=input.nextInt();
switch(month){
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
default:
System.out.println("非法月份");
}
}
4.for
4.1 输出所有的水仙花数
所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
例如: 153 = 111 + 333 + 555
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {// 实现所有的三位数的一个遍历
int j1 = 0;
int j2 = 0;
int j3 = 0;
j1 = i / 100;// 百位
j2 = (i - 100 * j1) / 10;// 十位
j3 = i - 100 * j1 - 10 * j2;// 个位
if (i == j1 * j1 * j1 + j2 * j2 * j2 + j3 * j3 * j3) {
System.out.println("此数值为满足条件的水仙花数:" + i);
//System.out.println(i+"="+j1+"*"+j1+"*"+j1+"+"+j2+"*"+j2+"*"+j2+"+"+j3+"*"+j3+"*"+j3);
}
}
}
4.2 输入两个正整数m和n,求其最大公约数和最小公倍数
public static void main(String[] args) {
//输入两个正整数m和n,求其最大公约数和最小公倍数
Scanner input = new Scanner(System.in);
System.out.println("请输入两个正整数:");
int m = input.nextInt();
int n = input.nextInt();
//获取m和n的较大值
int max = (m > n)? m : n;
//获取m和n的较小值
int min = (m < n)? m : n;
//求m和n的最大公约数
for(int i = min;i >= 1;i--){
if( m % i == 0 && n % i == 0){
System.out.println("m和n的最大公约数是:" + i);
break;
}
}
//求m和n的最小公倍数
for(int i = max;i <= m * n;i++){
if( i % m == 0 && i % n == 0){
System.out.println("m和n的最小公倍数是:" + i);
break;
}
}
}
4.3嵌套输出
打印如下的图形:
public static void main(String[] args) {
// 上半部分
for (int i = 0; i < 5; i++) {
// 输出“ ”
for (int j = 0; j < 4 - i; j++) {
System.out.print(" ");
}
// 输出“* ”
for (int k = 0; k < i + 1; k++) {
System.out.print("* ");
}
System.out.println();
}
// 下半部分
for (int i = 0; i < 4; i++) {
for (int j = 0; j < i + 1; j++) {
System.out.print(" ");
}
for (int k = 0; k < 4 - i; k++) {
System.out.print("* ");
}
System.out.println();
}
}
5.while
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
6.do-while
猜数字游戏
随机生成一个100以内的数,猜数字游戏: 从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次?
提示:随机数
import java.util.Random;
Random rand = new Random();
int num= rand.nextInt(100);
public static void main(String[] args) {
Random rand = new Random();
int num= rand.nextInt(100);
System.out.println(num);
Scanner input = new Scanner(System.in);
int guess;
int count = 0;
do {
System.out.println("请输入一个整数:");
guess=input.nextInt();
count++;
if(num < guess) {
System.out.println("大了");
}else if(num > guess) {
System.out.println("小了");
}else if(num == guess) {
System.out.println("猜对了");
}
}while(guess!=num);
System.out.println(count);
}