Java初级·分支语句

Scanner键盘录入对象

步骤

1.导包
2.创建键盘输入对象
3.通过键盘输入给变量赋值
获取用户输入的类型:
nextInt(); 获取用户输入的整数
nextDouble(); 获取用户输入的小数
nextBoolean(); 获取用户输入的boolean值
nextLine(); 结果是String类型,获取用户输入的字符串
next(); 结果是String类型,获取用户输入的字符串
这些方法统称为阻塞方法

阻塞方法:

程序执行到这个方法的时候,会阻塞主线程,程序不会继续执行,知道用户输入结束,程序继续执行

java.util.InputMismatchException

注意

异常名称: 输入的类型不匹配异常
产生原因: 用户输入的类型和接收的类型不一致
解决办法: 类型匹配即可

举例说明

// 1.导包
import java.util.Scanner;
public class ScannerDemo {
	public static void main(String[] args) {
		// 2.创建键盘输入对象
		// Scanner input = new Scanner(System.in);
		
		// 提示性语句
		// System.out.print("请输入整数: ");
		// 3.通过键盘输入给变量赋值
		int i = input.nextInt();
		System.out.println("你输入的整数是: " + i);
		
		System.out.print("请输入小数: ");
		double j = input.nextDouble();
		System.out.println("你输入的小数是: " + j);
		
		System.out.print("请输入boolean类型: ");
		boolean k = input.nextBoolean();
		System.out.println("你输入的boolean类型是: " + j);
		
		System.out.print("请输入字符串类型: ");
		String str = input.next();
		System.out.println("你输入的字符串类型是: " + str);
	}
}




public class pracscanner {
	public static void main(String[] args){
//1.键盘录入两个数,并将这两个数求和,求最大值,并输出
		
Scanner input = new Scanner(System.in);
		
		System.out.print("请输入第一个数: ");
		// 3.定义变量获取用户输入的第一个数
		int num1 = input.nextInt();
		System.out.print("请输入第二个数: ");
		// 4.定义变量获取用户输入的第二个数
		int num2 = input.nextInt();
		// 5.定义求和变量sum来计算两个数的和
		int sum = num1 + num2;
		// 6.定义最大值变量来计算两个数的最大值
		int max = num1 > num2 ? num1: num2;
		// 7.输出和以及最大值
		System.out.println("两个数的和为: " + sum + ",两个数的最大值为: " + max);
  }
}
/*
	2、键盘录入两个数,并判断两个数是否相等 (不要使用if-else)
	提高: 如果两个数相等,输出两个数相等,不相等就输出两个数不相等,同时输出两个数中较大的值
*/
import java.util.Scanner;
public class ScannerDemo02 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入第一个数: ");
		int num1 = input.nextInt();
		System.out.print("请输入第二个数: ");
		int num2 = input.nextInt();
		
		String result = (num1 == num2) ? "两个数相等": ("两个数不相等,并且两个数中最大值为: " + (num1 > num2? num1: num2));
		System.out.println(result);
	}
}

if 语句

单if语句

  • 单if语句
  • 需求: 小明考试成绩高于90分,奖励一个桃子
  • 定义: 针对条件情况单一的时候选择单if语句
  • 格式:
  • if(条件表达式) {
  • 语句体;
  • }
  • 执行流程:
  • 1.判断条件表达式是否成立
  • 成立
  • 执行语句体
  • 不成立
  • 不处理
  • 特点:
  • 1.三目运算符Y和Z中只能够写一条语句,if语句
    可以有多条,能够使用三目改进,尽量使用三目
  • 2.如果if语句中只有一条语句,大括号可以省略
    不写,建议写上
  • 3.if(score >= 90);{},无论条件是否成立,{}都会被执行
  • 案例:
  • 1、张三Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;
  • 或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
  • 张三Java成绩大于98分,而且音乐成绩大于80分
  • 或者
  • Java成绩等于100分,音乐成绩大于70分
  • 老师奖励他
public class If {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入考试成绩: ");
		double score = input.nextDouble();
		
		// System.out.println(score >= 90 ? "奖励桃子一个": "");
		// if (score >= 90) System.out.println("奖励桃子");
		if (score >= 90) {
			System.out.println("奖励桃子");
		}
		input.close();
	}
}

if else语句

  • 需求: 隔壁老王考试成绩大于30分,奖励去隔壁家看电影,否则去隔壁家打牌
  • 定义: 针对处理两种情况的时候使用if-else语句

格式

  • if(条件表达式) {
  • 语句体1;
  • } else {
  • 语句体2;
  • }
  • 执行流程:
  • 1.判断条件表达式是否成立
  • 成立
  • 执行语句体1
  • 不成立
  • 执行语句体2

特点:

  • 1.条件表达式必须是boolean类型的

  • 2.如果if或者else语句体中只有一条语句,大括号可以省略,建议不省略
    */

举例说明

public class IfDemo03 {
public static void main(String[] args) {
	Scanner input = new Scanner(System.in);
	System.out.print("请输入考试成绩: ");
	double score = input.nextDouble();
// System.out.println(score > 30 ? "隔壁家看电影": "隔壁家打牌");
if (score > 30) System.out.println("看电影");
else System.out.println("打牌");}
}

多重if语句

  • 定义: 针对多种情况【区间】的时候选择多重if语句
  • 格式:
  • if(布尔表达式1) {
  • 语句块1;
  • } else if(布尔表达式2) {
  • 语句块2;
  • } ………
  • else if(布尔表达式n){
  • 语句块n;
  • } else {
  • 语句块n+1;
  • }
    *
  • 执行流程:
  • 逐条if语句进行判断
  • 条件匹配,进入语句体
  • 否则对if语句继续匹配
    *
  • 特点:
  • 1.if语句和else语句只有一个,elseif语句可以有多个,else语句可以省略
  • 2.无论多重if语句中有多少个语句体,每次只能够执行一个语句体
  • 3.书写选择语句时候,注意一般都会先考虑写完其他情况
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("请输入分数:");
		int score=input.nextInt();
		if (score>90) {
			System.out.println("优秀");
		}else if(score>80){
			System.out.println("良好");
		}else if(score>60){
			System.out.println("及格");
		}else{
			System.out.println("差");
		}
			
		}
		
	}
	

嵌套if语句

定义: 针对条件特别复杂的情况,本质还是前三种if语句的相互结合

  • 格式: 没有固定格式
  • Debug断点调试
  • 1.定义断点
  • 2.进入Debug模式
  • 注意:
  • 1.判断两种类型是否相等
  • 基本数据类型 == 比较的是数值本身
  • 引用数据类型 == 比较的地址
  • 引用数据类型比较是否相等暂时使用equals方法,后面讲解
  • 2.嵌套if语句慎用,导致程序的可读性降低

举例说明

String gender=input.next();
gender.equals(“男”)
public class BreakPractice03 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("請輸入分數:");
		int grade=input.nextInt();
	
		
		if(grade<10){
			System.out.println("恭喜進入決賽!");
			System.out.println("請輸入您的性別!");
			String gender=input.next();
			if(gender.equals("男")){
				System.out.println("恭喜您進入男子組決賽");
			}else if(gender.equals("女")){
				System.out.println("恭喜您進入女子組決賽");
			}
		}else{
			System.out.println("抱歉您未能進入決賽!");
		}
	}
}

循环语句

for循环

通过题目讲解循环的正确打开方式

循环本质: 解决代码重复问题

格式

for(1.初始化语句;2.循环条件语句;4.控制条件语句){

3.循环体语句;

}

for循环执行流程参见图解

在这里插入图片描述

for循环的特点

1.表达式一省略,可以放在循环的外面,并且表达式1只能执行一次。

2.表达式二必须是boolean类型表达式,使用关系运算符和逻辑运算符。

表达式二也可以省略,表示死循环。

3.表达式三也可以省略,表示死循环

4.表达式123 都可以省略,成为for循环标准四循环格式

for(;;)

/*在控制台输出100句HelloWorld*/
public class BreakPractice04 {
	public static void main(String[] args) {
		for(int i=1;i<=100;i++){
			System.out.println("HelloWorld");
		}
	}
}

解题思路:

  • 1.分析题目要求,怎么想就怎么写
  • 2.找规律 【确定重复的次数】 10
  • 找相同 直接放入到循环体中 System.out.println();
  • 找不同
  • i = 1 1
  • i = 2 2
  • i = 3 3
  • i i
  • 尽量和循环变量建立联系
  • 如果不能够建立联系,那么自己自定义变量和变化规律建立联系

2、计算1到100的和,用for语句去实现

  • 解题思路:
  • 1.分析题目要求,怎么想就怎么写
  • 2.找规律 【确定重复的次数】
  • 找相同 直接放入到循环体中
  • 找不同
  • i = 1 1
  • i = 2 2
  • i = 3 3
  • i i
  • 尽量和循环变量建立联系
  • 如果不能够建立联系,那么自己自定义变量和变化规律建立联系
  • 分析:
  • 1 + 2 + 3 + 4 + … + 100
  • 定义求和变量sum来保存每次相加的结果
  • 0 + 1 = 1
  • 1 + 2 = 3
  • 3 + 3 = 6
  • 6 + 4 = 10
  • ? + 100 = 结果
  • 表达式左边第一个加数是上一次计算的结果
  • 表达式左边第二个加数从1~100
  • 表达式右边的结果就是累加的结果
  • 求和思想
  • 1.定义求和变量
  • 2.累加求和

while循环

引入:有了for循环为什么还需要学习while循环?

定义:针对循环次数不确定情况使用

格式;

1.初始化语句;

while(2.循环条件语句){

3.循环体语句

4.控制条件语句;

}

代码说明【重点】

public class Test {
	public static void main(String[] args) {
		double i=0.08;
		int count=0;
		while(i<8848130){// while的條件語句意思是滿足繼續循环,不滿足才会結束流程,不是直到。。為止的意思,理解!記牢!
			i=i*2;
			count++;
		}
		System.out.println(count);
	}
}

do while 循环

引入:有了while循环为什么需要学习do-while循环?

do-while格式

1.初始化语句;

do{

3.循环体语句;

4.控制条件语句;

}while(2.控制条件语句);

嵌套循环

定义:前三种循环的嵌套使用

格式;没有固定格式

执行流程:

特点:

1.外层循环遍历一次,内层循环要遍历一轮。

2,外层循环控制行数,内层循环控制列数。

3.每次进入了内层循环就不要再考虑外层循环。

代码说明

/*请在控制台输入如下图形:【外行内列】
		 *			*******
		 *			*******
		 *			********/
public class Test {
	public static void main(String[] args) {
		for(int j=1;j<=3;j++){
			for(int i=1;i<=7;i++){
				System.out.print("*");
		}System.out.println();
		}

	}
}

/*/*
 * 1、打印如下图案 直角三角形
 *	*
 *	***			提示:
 *	*****			      外层循环控制行数
 *	*******		   	      内层循环控制每行的*号数
 *	**********/
public class Test {
	public static void main(String[] args) {
		for(int i=1;i<=5;i++){
			for(int b=1;b<=(2*i-1);b++){
				System.out.print("*");//此處用print不換行。
			}
			System.out.println();//此處作用是用來換行的
		}

	}
}

本章习题集

**1.求不能被3整除的数之和

注意:syso在循环体外是输出整体结果,在循环体内会每次循环输出一次。

public class BreakPractice04 {
	public static void main(String[] args) {
		int sum=0;
		for(int i=1;i<=100;i++){
			if(i%3 !=0){sum=sum+i;}
			
		}System.out.println(sum);
		
	}	
}

2.求n的阶乘

public class BreakPractice04 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("請輸入整數n");//做題時忘加此行,無法輸入;
		int n=input.nextInt();
		int sum=1;
		for(int i=1;i<=n;i++){//i要先定義,別就寫個i=。。
			sum=sum*i;
		}
		System.out.println(sum);
	}	
}

3.请输入一个值,输出加法表

public class Practice01 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("請輸入一個正整數");
		int n=input.nextInt();
		int sum=0;
		for(int i=0,j=n;i<=n&& j>=0;i++,j-- ){
			sum=i+j;
		System.out.println(i+"+"+j+"="+sum);
		}
	}
}

##4 顾客折扣

普通顾客 购物满100元9折
会员购物 8折(会员购物满200元 7.5折)
输入是否是会员,再输入购物金额,输出实际付款。

import java.util.Scanner;

public class ImportantPractice07 {
	public static void main(String[] args){
		Scanner input=new Scanner(System.in);
		System.out.println("请问您是否是会员(是/否):");
		String choice=input.next();
		System.out.println("请输入购物金额");
		double cost=input.nextDouble();
		if (choice.equals("是")) {
			if (cost>=200) {
				System.out.println("實際付款"+cost*0.75);
			}else{
				System.out.println("實際付款"+cost*0.8);
			}
		}else if(choice.equals("否")){
			if (cost>=100) {
				System.out.println("實際付款"+cost*0.9);
			}else{System.out.println("實際付款"+cost);}
		}else{}
}
		
		
}

超市换购系统,功能如下:
用户输入消费金额
输入完成后询问是否参加换购活动
输入是
弹出5个优惠活动显示供用户选择
1:满50元,加2元换购百事可乐饮料一瓶
2:满100元,加3元换购500ml可以一瓶
3:满100元,加10元换购5公斤面粉
4:满200元,加10元可以换购一个苏珀尔炒菜锅
5:满200元,加20元可以函购欧莱雅爽肤水一瓶
假设选择4
输出消费总金额
并显示成功换购的奖品
输入否
欢迎下次光临*/

public class ImportantPractice11 {
	public static void main(String[] args){
	Scanner input=new Scanner (System.in);
	System.out.println("请输入消费金额:");
	double cost=input.nextDouble();
	System.out.println("是否參與換購?是/否");
	String choice =input.next();
	
	if(choice.equals("是")){
		System.out.println("換購選擇");
		System.out.println("1:满50元,加2元换购百事可乐饮料一瓶");
		System.out.println("2:满100元,加3元换购500ml可乐一瓶");
		System.out.println("3:满100元,加10元换购5公斤面粉");
		System.out.println("4:满200元,加10元可以换购一个苏珀尔炒菜锅");
		System.out.println("5:满200元,加20元可以换购欧莱雅爽肤水一瓶");
		System.out.println("请选择换购类型,回复对应序号即可!");
		int numb=input.nextInt();
		switch(numb){
		case 1:
			if(cost>=50){
				cost=cost+2;
				System.out.println("您本次总共消费"+cost+"元;");
				System.out.println("成功换购了:百事可乐饮料一瓶");
			}else{System.out.println("对不起,您本次消费不满足该条件!");}
			break;
		case 2:
			if(cost>=100){
				cost=cost+3;
				System.out.println("您本次总共消费"+cost+"元;");
				System.out.println("成功换购了:500ml可乐一瓶");
			}else{System.out.println("对不起,您本次消费不满足该条件!");}
			break;
		case 3:
			if(cost>=100){
				cost=cost+10;
				System.out.println("您本次总共消费"+cost+"元;");
				System.out.println("成功换购了:5公斤面粉");
			}else{System.out.println("对不起,您本次消费不满足该条件!");}
			break;
		case 4:
			if(cost>=200){
				cost=cost+10;
				System.out.println("您本次总共消费"+cost+"元;");
				System.out.println("成功换购了:一个苏珀尔炒菜锅");
			}else{System.out.println("对不起,您本次消费不满足该条件!");}
			break;
		case 5:
			if(cost>=200){
				cost=cost+20;
				System.out.println("您本次总共消费"+cost+"元;");
				System.out.println("成功换购了:欧莱雅爽肤水一瓶");
			}else{System.out.println("对不起,您本次消费不满足该条件!");}
			break;
		}
		
			
		}
	else if (choice.equals("否")){
			System.out.println("欢迎下次光临!");
		}else{
			
		}
			
		}
	
	}

5.水仙花题目

在控制台输出1000以内的所有水仙花数,并统计水仙花数的个数
注:水仙花数指的是其各位数的立方和等于该数本身的三位数
153

分析:

1.定义统计变量
2.遍历100~999之间的每一个数
3.获取到每一个数,分离每一位
4.判断各位的立方和是否等于概述本身
相等
输出这个数
count++;
不相等
不处理

public class Test {
	public static void main(String[] args) {
		int count=0;
		for(int i=100;i<=999;i++){
			int ge=i/1%10;
			int shi=i/10%10;
			int bai=i/100%10;
			if (i==Math.pow(ge, 3)+Math.pow(shi, 3)+Math.pow(bai, 3)) {
				System.out.println(i);
				count++;
			}
		}System.out.println(count);
	}
}

6.商品清单打印案例

public class DoWhileLoopDemo02 {
	public static void main(String[] args) {
		System.out.println("************************");
		System.out.println("请选择购买的商品编号:");
		System.out.println("1.T恤\t\t2.网球鞋\t\t3.网球拍");
		System.out.println("************************");
		
		Scanner input = new Scanner(System.in);
		String isGoOn = "";
		
		// 定义变量保存应付的金额
		double totalPrice = 0.0;
		// 定义折扣
		double discount = 0.8;
		
		do {
			System.out.print("请输入商品编号: ");
			int buyNo = input.nextInt();
			System.out.print("请输入购买数量: ");
			int num = input.nextInt();
			
			// 定义变量保存商品的名称
			String goodName = "";
			// 定义变量保存商品的单价
			double price = 0.0;
			// 定义变量保存商品的总价
			double money = 0.0;
			
			switch (buyNo) {
			case 1:
				goodName = "T恤";
				price = 245.0;
				break;
			case 2:
				goodName = "网球鞋";
				price = 570.0;
				break;
			case 3:
				goodName = "网球拍";
				price = 320.0;
				break;

			default:
				System.out.println("该商品不存在!!!");
				break;
			}
			
			money = price * num;
			System.out.println(goodName + " ¥" + price + " \t数量 " + num + "\t合计 ¥" + money);
			totalPrice += money;
			
			System.out.print("是否继续(y/n): ");
			isGoOn = input.next();
			
		} while(isGoOn.equals("Y") || isGoOn.equals("y"));
		
		System.out.println("折扣: " + discount);
		
		double payMoney = totalPrice * discount;
		
		System.out.println("应付金额: " + payMoney);
		
		double realMoney = 0.0;
		
		System.out.print("实付金额: ");
		while((realMoney = input.nextDouble()) < payMoney) {
			System.out.print("您输入的金额小于应付金额,请重新输入: ");
		}
		
		System.out.println("找钱:" + (realMoney - payMoney));
	}
}

7.S=a+aa+aaa+、、

求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
2 + 210+2 + (210+2)10 +2 + ((210+2)*10 +2)*10 + 2

8.阶和

计算 n+(n-1)+(n-2)+…+3+2+1的值

public class Test {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("請輸入級n");
		int n=input.nextInt();
		int sum=0;
		for(int i=1;i<=n;i++){
			sum=sum+i;
		}System.out.println(sum);
	}
}

**9.计算正整数各位数的和

问题:编写一个程序,让用户输入一个正整数值,然后计算该数各位数的和,
例如:如果输入的数是123,则计算结果是6
123%10=3 ;123/10=12;求和//得出个位
12%10=2; 12/10=1 ;求和 //得出十位
1%10=1; 1/10=0; 求和 //得出百位
0 不和循环条件结束

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值