Java-day4(程序的流程控制,循环的使用,获取随机数)

程序流程控制

在这里插入图片描述
从键盘上获取 import java.util.Scanner;(先导入包)
Scanner scan = new Scanner(System.in);
int grade = scan.nextInt();

但是char(字符型–单个字符)类型是不能被输入的只能输入字符串类型要想获取char类型
只能String word = scan.next();
char c = word.charAt(0);

/*
岳小鹏参加Java考试,
他和父亲岳不群达成承诺: 
如果: 成绩为100分时,奖励一辆BMW; 
成绩为(80,99]时,奖励一台iphone xs max; 
当成绩为[60,80]时,奖励一个 iPad; 
其它时,什么奖励也没有。 
请从键盘输入岳小鹏的期末成绩,并加以判断
*/

import java.util.Scanner;
class if_homework{
	public static void main(String[] args) {
	
	Scanner scan = new Scanner(System.in);
	int grade = scan.nextInt();
	if (grade == 100){
		System.out.println("奖励你一台BWM");
	}else if (grade > 80 && grade <= 99){
		System.out.println("奖励你一台iPhone X");
	}else if (grade >= 60 && grade <= 80){
		System.out.println("奖励你一台iPad");
	}else{
		System.out.println("什么都没有");
		}
	}
}


import java.util.Scanner;

class  ScannerTest{
	public static void main(String[] args) 
	{	Scanner scan = new Scanner(System.in);

		System.out.println("请输入你的名字:");
		String name = scan.next();
		
		System.out.println("请输入你的年龄:");
		int age = scan.nextInt();
	

		System.out.println("请输入你的体重:");
		double weight = scan.nextDouble();
		

		System.out.println("你是否单身?(false/true)");
		boolean isSingle = scan.nextBoolean();
		System.out.println("我的名字是:"+name+"我今年"+age+"岁,我的体重是:"+weight+"kg,我是否单身:"+isSingle+".");
	}
}

执行结果:
在这里插入图片描述

//三个数大小排序

import java.util.Scanner;
class Sort_test{
	public static void main(String[] args) 
	{	
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入第一个数:");
		int num1 = scan.nextInt();
		System.out.println("请输入第二个数:");
		int num2 = scan.nextInt();
		System.out.println("请输入第三个数:");
		int num3 = scan.nextInt();

		if (num1 >= num2){
			if(num1 <= num3)
				System.out.println(num3+","+num1+","+num2);
			else if (num3 <= num2)
				System.out.println(num1+","+num2+","+num3);
			else
				System.out.println(num1+","+num3+","+num2);
		}
		else{
			if(num2 >= num1)
				if(num3 >= num2)
					System.out.println(num3+","+num2+","+num1);
				else if(num3 <= num1)
					System.out.println(num2+","+num1+","+num3);
				else
					System.out.println(num2+","+num3+","+num1);
			}
		}
	}
}

if-else 如果执行语句只有一行那么大括号是可以省略的.

练习题

int x = 4; 
int y = 1; 
if (x > 2) { 
	if (y > 2) 
		System.out.println(x + y); 
		System.out.println("atguigu"); 
} else 
	System.out.println("x is " + x);

执行结果:

atguigu

因为x大于2 所以会执行第一个 if 里面语句但是因为第二个if后面没加大括号,所以第二个if只能跟x+y这句输出有关系,而atguigu这句话是跟第二个if是并列关系所以输出“atguigu”.

int x = 4; 
int y = 1; 
if (x > 2) 
	if (y > 2) 
		System.out.println(x + y); 
		System.out.println("atguigu"); 
else 
	System.out.println("x is " + x);
	

执行结果:

4

注:没有大括号的if-else只会管下一行代码
第一个if 会执行然后执行下一个if 第二个不成立然后执行else所以输出 4 .

boolean b = true; 
//如果写成if(b=false)能编译通过吗?如果能,结果是? 
if(b == false) 
	System.out.println("a"); 
else if(b) 
	System.out.println("b"); 
else if(!b) 
	System.out.println("c"); 
else 
	System.out.println("d");

执行结果:

b
//如果改为flase那么就会变成结果为 c

改为flase就会把flase赋给b 所以结果为c.

获取随机数

int value = (int)(Math.random() * 90 + 10);
System.out.println(value);
//Math.random()产生大于等于0.0 小于1.0的区间,所以在0-99的数我们只能自己配.
// [0.0, 1.0) → [0.0,90.0)→[10.0,100.0)→{10.99)
//公式:如果想得到[a,b]: (int)(Math.random()*(b - a + 1) + a) 不要忘记括号.

/*家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,
当然要提出 一定的条件:
高:180cm以上;
富:财富1千万以上;
帅:是。 
如果这三个条件同时满足,则:“我一定要嫁给他!!!” 
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。” 
如果三个条件都不满足,则:“不嫁!”
*/

import java.util.Scanner;
class if_test4{
	public static void main(String[] args) 
	{
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入你的身高:(cm)");
		double height = scan.nextDouble();
		System.out.println("请输入你的财富:(千万)");
		int money = scan.nextInt();
		System.out.println("是否帅气:(true/false)");
		boolean handsome = scan.nextBoolean();

		if(height >= 180 && money >=10 && handsome){
			System.out.println("我一定要嫁给他");}
		else if (height >= 180 || money >=10 || handsome)
		{
			System.out.println("嫁吧,比上不足,比下有余。");
		}
		else{
			System.out.println("不嫁");
		}
	}
}

switch-case结构

在这里插入图片描述
default相当于else,case之后不能放范围只能是常量(字符串数值等, break是可加可不加的 经验之谈大多数情况都是需要加的
在这里插入图片描述

class SwitchCaseTest {
	public static void main(String[] args) {
		
		int number = 2;
		switch(number){
		
		case 0:
			System.out.println("zero");
		case 1:
			System.out.println("one");
		case 2:
			System.out.println("two");
		case 3:
			System.out.println("three");
		default:
			System.out.println("other");
		}
	}
}

执行结果:

zero
one
two

加break的情况(多选一)

class SwitchCaseTest {
	public static void main(String[] args) {
		
		int number = 3;
		switch(number){
		
		case 0:
			System.out.println("zero");
			break;
		case 1:
			System.out.println("one");
			break;
		case 2:
			System.out.println("two");
			break;
		case 3:
			System.out.println("three");
			break;
		default:
			System.out.println("other");
			//break;
		}

执行结果:

three

用switch-case对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
在这里插入图片描述
当多个case输出语句一样时可以合并。

更优
在这里插入图片描述

/*
从键盘上输入2019年的“month”和“day”,要求通过程序 输出输入的日期为2019年的第几天。
*/
import java.util.Scanner;
class switch_case {
	public static void main(String[] args) 
	{	
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入day:");
		int day = scan.nextInt();
		System.out.println("请输入month:");
		int month = scan.nextInt();
		
		int sumday = 0;
		switch (month){
		case 12:
			sumday += 31;
		case 11:
			sumday += 31;
		case 10:
			sumday += 30;
		case 9:
			sumday += 31;
		case 8:
			sumday += 31;
		case 7:
			sumday += 30;
		case 6:
			sumday += 31;
		case 5:
			sumday += 30;
		case 4:
			sumday += 31;
		case 3:
			sumday += 28;
		case 2:
			sumday += 31;
		case 1:
			sumday += day;
		
		}
		System.out.println("2019年"+month+"月"+day+"日,是当年的第"+sumday+"天");
	}
}

/*
从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准: 
1)可以被4整除,但不可被100整除 
或 
2)可以被400整除
*/
import java.util.Scanner;
class switchCase {
	public static void main(String[] args) 
{
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年份:");
		int year = scan.nextInt();
		System.out.println("请输入月份:");
		int month = scan.nextInt();
		System.out.println("请输入那一天:");
		int day = scan.nextInt();
		
		int sumday = 0;
		switch(month){
		case 12:
			sumday += 30;
		case 11:
			sumday += 31;
		case 10:
			sumday += 30;
		case 9:
			sumday += 31;
		case 8:
			sumday += 31;
		case 7:
			sumday += 30;
		case 6:
			sumday += 31;
		case 5:
			sumday += 30;
		case 4:
			sumday += 31;
		case 3:
			if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)){
				sumday += 29;
		}
			else{
				sumday += 28;			
		}
		case 2:
			sumday += 31;
		case 1:
			sumday += day;
		}
		System.out.println("今天是"+year+"年的第"+sumday+"天");
	}
}

说明:1. 凡是可以使用switch-case的结构,都可以转换为if- else。反之,不成立。
2. 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),
又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高。

for循环

在这里插入图片描述
在这里插入图片描述

//输出5次Hello world!
for(int i = 1;i <= 5;i++){//i:1,2,3,4,5
			System.out.println("Hello World!");
		}
		//i:在for循环内有效。出了for循环就失效了。
		//System.out.println(i);

练习:
在这里插入图片描述
在这里插入图片描述

/*
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60。
说明:break关键字的使用
*/
import java.util.Scanner;
class fortest {
	public static void main(String[] args) 
	{
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入m:");
		int m = scan.nextInt();
		System.out.println("请输入n:");
		int n = scan.nextInt();
		
		int min = (m <= n)? m : n;
		
		for (int i = min;i <= min ;i-- ){
			if(m % i == 0 && n % i ==0){
				System.out.println("最大公约数是:"+i);
				break;
			}	
		}
		
		for (int i = 1; i>=1 ;i++ ){
			if(i % m == 0 && i % n == 0){
				System.out.println("最小公倍数是:"+i);
					break;
			}	
		}
	}
}
/*打印水仙花数
输出所有的水仙花数,
所谓水仙花数是指一个3位数,
其各个位上数 字立方和等于其本身。 
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5
*/
class  shuixiannum{
	public static void main(String[] args) 
	{
	

		for(int i = 100 ;i < 1000;i++){
			int hundreds = i/100;
			int tens = i % 100 /10;
			int ones = i % 10;
			if (i == hundreds * hundreds *hundreds + tens * tens * tens + ones * ones * ones ){
				System.out.println("水仙花数是:"+i);
			} 
		}
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值