java基础03_java基本语法详解

138 阅读5分钟

1.Scanner

Scanner input = new Scanner(System.in);

2.if-else

2.1 运行结果

image.png

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嵌套输出

打印如下的图形:

image.png

      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时结束程序。

image.png

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);
	}

7.break-continue