java学习第04天--程序

分支语句:if
分支结构也称为选择结构,程序根据条件表达式的值来决定程序的走向。
if语句的第一种格式:
if( 条件表达式 ){
    语句体;
}
...// 其它语句


if语句的第二种格式:
if( 条件表达式 ){
    语句体1
}else{
    语句体 2
}
...// 其它语句


if语句的第二种格式:
if( 条件表达式 ){
    语句体1
}else if{
    语句体 2
}
...
else{
语句体n;
}
// 其它语句
if语句注意事项:
•if后的括号内一定是布尔值或者布尔表达式
•第二种格式与三元运算符的区别:三元运算符运算完要有值出现,并且可以写在其他表达式中
•if的语句块中可以加多条语句,实现更复杂的逻辑
•if/else后边的大括号可以省略,此时if语句只能控制到第一个分号结束;如果有多条语句的话,不能省略
  建议不要省略大括号

如何接收从键盘录入数据:?
import java.util.Scanner;
Scanner s = new Scanner(System.in);
s.nextInt();    // 获取 int , s.next() 获取字符串


分支结构的练习:
1、从键盘输入数,判断是偶数还是奇数
import java.util.Scanner;

public class IfDemo{
public static void main(String[] args){
//创建Scanner类的对象sc
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数:");
int i = sc.nextInt();
int res = i % 2;
if(res == 0){
System.out.println(i + "是偶数");
}else{
System.out.println(i + "是奇数");
}
}
}

2、从键盘输入三个数,显示其中的最大值,要求使用if-else和三元运算符两种方式实现
import java.util.Scanner;

public class Age{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一个整数:");
int i = sc.nextInt();
System.out.print("请输入第二个整数:");
int j = sc.nextInt();
System.out.print("请输入第三个整数:");
int k = sc.nextInt();
// 方法一:使用三元运算符
// int max = i>j?(i>k?i:k):(j>k?j:k);
// System.out.println("经检测,您输入的最大整数是max = "+max);
// 方法二:使用三元运算符
// int res = i>j?i:j;
// int max = res>k?res:k;
// System.out.println("经检测,您输入的最大整数是max = "+max);
// 方法三:使用if else语句
/*
if(i > j && i >k){
System.out.println("经检测,您输入的最大整数是:" + i);
}else if(j > i && j > k){
System.out.println("经检测,您输入的最大整数是:" + j);
}else{
System.out.println("经检测,您输入的最大整数是:" + k);
}
*/
// 方法四:使用if - else语句
if(i > j){
if(i > k){
System.out.println("经检测,您输入的最大整数是:" + i);
}else{
System.out.println("经检测,您输入的最大整数是:" + k);
}
}else{
if(j >k){
System.out.println("经检测,您输入的最大整数是:" + j);
}else{
System.out.println("经检测,您输入的最大整数是:" + k);
}
}
}
}

3、判断分数及格和优秀的表现
import java.util.Scanner; //导入Scanner类

public class Scan_score{
public static void main(String[] args){
//创建Scanner类的对象sc
Scanner sc = new Scanner(System.in);
//提示输入信息
System.out.println("请输入分数:");
int score = sc.nextInt(); //阻塞式
System.out.println("您输入的分数是:" + score);
if(score < 0){
System.out.println("分数不能为负");
}else if(score < 60){
System.out.println("不及格");
}else if(score < 90){
System.out.println("优秀");
}else if(score == 100){
System.out.println("恭喜您得了满分");
}else{
System.out.println("您的分数奇了怪了");
}
}
}

分支结构:switch
格式:
switch(表达式或变量){
  case 取值1:
      语句体1;
      break;
  case 取值2:
      语句体2;
      break;
  …
  default:
      语句体n+1;
      break;
}

switch 语句有如下规则:
  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串类型了,同时 case 标签必须为字符串常量或字面量。
  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  • switch 语句可以包含一个 default 分支,该分支必须是 switch 语句的最后一个分支。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

分支结构switch练习:
1、从键盘输入月份数字,显示是第几个季度
import java.util.Scanner;

public class SwitchDemo{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入月份:");
int month = sc.nextInt();
switch(month){
case 1:
case 2:
case 3:{
System.out.println(month + "月份属于第一季度");
break;
}
case 4:
case 5:
case 6:{
System.out.println(month + "月份属于第二季度");
break;
}
case 7:
case 8:
case 9:{
System.out.println(month + "月份属于第三季度");
break;
}
case 10:
case 11:
case 12:{
System.out.println(month + "月份属于第四季度");
break;
}
default:{
System.out.println("您已经超神了");
break;
}
}
}
}

2、 从键盘输入消费金额,显示原金额和折扣价
200 以下没有折扣;
200-399 九折;
400-599 八折;
600 往上七折;
import java.util.Scanner;

public class SwitchDemo2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入消费金额:");
int charge = sc.nextInt();
double discount = 1.0;
int money = charge /200;
if(money < 0){
System.out.println("输入的消费额有问题.");
}else{
switch(money){
case 0:{
break;
}
case 1:{
discount = 0.9;
break;
}
case 2:{
discount = 0.8;
break;
}
default:{
discount = 0.7;
break;
}
}
System.out.println("折扣前:"+ charge + ", 折扣后:" + (charge * discount));
}
}
}

循环结构:for
循环语句可以在满足循环条件的情况下,反复执行某一段代码
被反复执行的代码称为循环体
需要在适当的时候,把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环
完整的循环应该包含以下四个部分:
Ø初始化语句:初始化工作,在循环体开始之前执行
Ø循环条件:一个boolean表达式,决定是否执行循环体
Ø循环体:反复执行的部分
Ø迭代语句:在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束

格式:
for(初始化表达式 ;条件表达式;循环变量控制语句){
  循环体语句;
}
格式说明:
for运行的顺序:
1. 执行初始化表达式,只执行一次,通常是定义循环变量语句
2. 判断循环条件:为真就往下执行;为假就结束循环
3. 执行循环体语句
4. 执行循环变量控制语句,一般是循环变量的自增或自减
5. 回到第 2 步,重复这个过程,直到为假时结束

for循环注意事项:
1. 循环变量通常定义为 int 型,因为最常用的就是 int
2. 循环条件判断的结果是 boolean 类型值
3. 小括号中的分号不能写成中文的分号
4. 如果循环体只有一条语句的话,可以省略大括号,但建议写全
5. 循环变量控制语句不必每次改变 1,根据情况,可以是任意值

for循环结构的练习:
1、在控制台上依次打印1-10
import java.util.Scanner;

public class ForDemo{
public static void main(String[] args){
for(i = 1; i <= 10; i++){
System.out.println(i);
}
}

2、在控制台上依次打印10-1
import java.util.Scanner;

public class ForDemo{
public static void main(String[] args){
for(int i = 10; i > 0; i --){
System.out.println(i);
}
}

3、求1-10所有数之和
int sum = 0;
for(int i = 1; i < 11; i ++){
sum = sum + i ;
}
System.out.println("1到10所有数相加和为:" + sum);

4、求出1-100之间所有偶数之和
int sum = 0;
for(int i = 2; i <= 100; i +=2){
sum = sum + i;
}
System.out.print("1-100之间所有偶数之和为:" + sum);

5、求出1-100之间所有的奇数之和
int sum = 0 ;
for(int i = 1; i <= 100; i +=2){
sum = sum + i;
}
System.out.print("1-100之间所有奇数之和为:" + sum);

6、求出5的阶乘
int res = 1;
for(int i = 1; i <= 5; i ++){
res *= i;
}
System.out.println("5的阶乘是:" + res);

7、键盘输入判断是偶数还是奇数
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数:");
int i = sc.nextInt();
int res = i % 2;
if(res == 0){
System.out.println(i + "是偶数");
}else{
System.out.println(i + "是奇数");
}

8、水仙花数:三位数,各个位上数字的立方和等于这个数本身,例如:153
for(int i = 100; i <= 999; i ++){
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
System.out.println("水仙花数都有:" + i);
}
}

9、列出5位数中的回文数,一个数逆序后和原来的数相等
int count = 0;
for(int i = 10000;i<=99999;i++){
int wan = i / 10000;
int ge = i % 10;
int shi = i / 10 % 10;
int qian = i / 1000 % 10;
if(wan == ge && shi == qian){
if(count % 10 ==0){
System.out.println();
}
count++;
System.out.print(i + " ");
}
}

10、统计1000以内,同时是3,5,7的倍数的数有多少个?
int count = 0;
for(int i = 0;i<=1000;i++){
if(i % 3 == 0 && i % 5 == 0 && i % 7 == 0){
System.out.println(i);
count++;
}
}
System.out.println("同时是3,5,7的倍数的数有: " + count + "个");

11、在1-100之间,若是3的倍数,则在它之后输出中文“三”,若是5的倍数,则在它之后输出中文“五”,若是7的倍数,则在它之后输出中文“七”
for(int i = 1; i < 100; i ++){
System.out.print(i);
if(i % 3 == 0){
System.out.print(" 三");
}
if(i % 5 == 0){
System.out.print(" 五");
}
if(i % 7 == 0){
System.out.print(" 七");
}
System.out.println();
}

循环结构:while
while语句格式
  [ 初始化部分 ]
while(条件表达式){
  循环体语句;
  [ 循环变量控制语句 ]
}

执行流程:
1. 执行初始化语句(如果有的话)
2. 判断条件表达式真假:如果真,往下执行;如果假,结束循环
3. 执行循环体语句
4. 执行循环变量控制语句(如果有的话)
5. 返回第 2 步,重复执行,直到条件为假,结束循环

循环变量的使用问题:
for 循环的循环变量,一般情况下在循环外是不能访问到的,因为它的作用域是在 for 循环的 {} 之内,但是可以通过把循环变量定义在外边来实现这个功能;或者定义计数器


while 循环本身就把循环变量定义在循环之外,所以没有这个问题


for和while的应用场景
1. 当明确知道循环的范围的时候,通常使用 for
2. 当不明确循环次数的时候, for while 都可以,通常使用 while

案例:
已知珠穆朗玛峰的高度是: 8848 米,假设有一张足够大的纸,厚度是 0.01 米,请问:这张纸折叠多少次可以保证厚度不低于珠穆朗玛峰的高度?
public class WhileDemo{
public static void main(String[] args){
int count = 0;
double hill = 8848.0;
double paper = 0.01;
while(paper < hill){
count++;
paper = paper * 2;
System.out.println("当前折叠的次数是: " + count + ",当前纸的厚度是: " + paper);
}
System.out.println("折叠的次数是:"+count);
}
}











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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值