控制语句分类:
1、选择语句:也叫分支语句
if语句
if(boolean类型){ //分支1
java语句;
}else if(布尔表达式){
java语句;
…
}else{//分支2
java语句;
}
4种语法机制:
1、if(布尔表达式){}
2、if(){}else{}
3、if(){}else if(){}else if(){}
4、if(){}else if(){}else if(){}else{}
if嵌套:
if(){
if(){}
}else{
}
判断性别
public class demo02 {
public static void main(String[] args) {
boolean sex =true;
//三目运算
String a=sex?"男":"女";
System.out.println(a);
//if语句
if (sex){
System.out.println("男");
}else {
System.out.println("女");
}
}
}
业务需求:
1.从键盘上接收一个人的年龄
2.根据要求为[0-150],其他值表示非法,需要提示非法信息
3.根据人的年龄来动态的判断这个属于生命的哪个阶段?
[0-5]婴幼儿
[6-10]少儿
[11-18]少年
[19-35]青年
[36-55]中年
[56-100]老年
4.请用if语句完成以上的业务逻辑
方法1
public class demo02 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入年龄:");
int age = scanner.nextInt();
if (age<0||age>150){
System.out.println("您输入的年龄不合法");
return;
}else {if (age<=5){
System.out.println("婴儿");
}else if (age<=10){
System.out.println("少儿");
}else if (age<=18){
System.out.println("青年");
}else if (age<35){
System.out.println("中年");
}else {
System.out.println("老年");
}}
}
}
方法2
public class demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入年龄:");
int age = scanner.nextInt();
String str = "老年";
if (age < 0 || age > 150) {
System.out.println("您输入的年龄不合法");
return;
} else {
if (age <= 5) {
str = "婴儿";
} else if (age <= 10) {
str = "少儿";
} else if (age <= 18) {
str = "少年";
} else if (age <= 35) {
str = "青年";
} else if (age <= 55) {
str = "中年";
}
System.out.println(str);
}
}
}
业务需求:
从键盘上接收天气的信息
1表示:雨天
0表示:晴天
同时从键盘上接收性别的信息
1表示:男
0表示:女
业务要求:
当天气是雨天的时候:
男的:打一把打黑伞
女的:打一把小花伞
当天气是晴天的时候:
男:直接走起,出去玩耍
女:擦点防护霜
需要使用if语句嵌套方法来展示这个业务
class test {
public static void main(String[] args) {
//创建键盘扫描对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入天气信息:1.表示雨天,0.表示晴天");
//读取键盘输入的int值
int sex = scanner.nextInt();
System.out.println("请输入性别:1.表示男 0.表示女");
//读取键盘输入的int值
int weather = scanner.nextInt();
if (weather == 1) {
if (sex == 1) {
System.out.println("请打一把黑伞");
} else if (sex == 0) {
System.out.println("打一把小花伞");
}
} else if (weather == 0) {
if (sex == 0) {
System.out.println("擦防护霜");
} else if (sex == 1) {
System.out.println("直接走起,出去玩耍");
}
}
}
}
switch语句也可以叫分支语句
语法格式:
switch(值){//允许是String、int类型(byte、short、char可以转换为int)
case 值1:
java语句;
break;
case 值2:
java语句;
break;
case 值3:
java语句;
break;
default:
java语句;
}
业务:
[90,100]优
[60,90)良
[0,60)不及格
class test{
public static void main(String[] args) {
/**
* [90,100]优
* [60,90)良
* [0,60)不及格
*/
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生成绩");
double score = scanner.nextDouble();
//0,1,2,3,4,5,6,7,8,9...
int a = (int) (score / 10);
if (a<0||a>100){
System.out.println("成绩输入错误!");
}
String str= "不及格";
switch (a) {
case 10:
case 9:
str= "优";
break;
case 8:
case 7:
case 6:
str= "良";
break;
}
System.out.println(str);
}
}
以上是一个完整的switch语句,其中:break,default不是必须的;
switch支持的值有哪些?
int、String类型,jdk8之前不支持String,只支持int
2、循环语句
for循环
for(初始化表达式;布尔表达式;更新表达式){循环体}
执行流程:先初始化表达式,再布尔表达式,为true,再走循环体,再更新表达式;再判断布尔表达式继续执行
while循环
while(布尔表达式){循环体}
执行次数0-n次
格式:
int i = 0;//初始化表达式
while (i < 10) {//布尔表达式
System.out.println(123);
i++;//更新表达式
}
do…while…循环
do{循环体}while(布尔表达式)
执行次数1-n次
格式:
//输出次数6
int x=0;//初始化表达式
do {
System.out.println(23);
x++;//更新表达式
}while (x<6);//布尔表达式
3、转向语句
break
//输出了一次i=1,下次就停止了
for (int i = 0; i <5
; i++) {
if (i==1){
break;
}
System.out.println(“输出了”);
}
continue
//终止本次循环 i=1,再执行下次循环
for (int i = 0; i < 5
; i++) {
if (i == 1) {
continue;
}
System.out.println(“输出了”);
}
return和break区别?
break是终止for循环,后面的内容不会执行,return是终止是离它最近的方法,后面的内容会执行
题目:
1、求1000以内,不能被7整除的和
2、计算1+2-3+4-5+6-7…+100的结果
3、从控制台输出一个正整数,计算该数字阶乘。例如:输入5,阶乘是54321
4、从控制台接收一个正整数,判断是是否是质数‘
5、从键盘输入一个正整数,该正整数作为行数,输出以下图形
*
***
*****
********
**********
输入5,打印上的5行
6、小芳的妈妈每天给她2.5块钱,她都会存起来,但是,每当这一天是存钱的第5天,或者5的倍数的话,都会花去6元,请问,经过多少天,消防才可以存到100元
6、一个数如果恰好等于它因子之和,这个数就是完整的,例如,6=1+2+3,编程呢个找出1000内所有的完数
答案
package test01;
import java.util.Scanner;
/**
* 1000内,不能被7整除的和
*/
class SimpleDoWhile {
public static void main(String[] args) {
//在外部准备一个变量,存储求和结果
int sum = 0;
for (int i = 1; i < 1000; i++) {
if (i % 7 != 0) {
sum += i;
}
}
System.out.println(sum);
}
}
/**
* 思路:
* 循环过程中取出每个值,判断是偶数还是奇数,偶数就加,奇数就减
*/
class HomeWork2 {
public static void main(String[] args) {
int sum = 1;
for (int i = 2; i <= 100; i++) {
if (i % 2 == 0) {//偶数
sum += i;
} else {//奇数
sum -= i;
}
}
System.out.println("结果是" + sum);
}
}
/**
* 从控制台输出一个正整数,计算该数字阶乘。例如:输入5,阶乘是5*4*3*2*1
*/
class HomeWork3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入正整数是:");
int i = scanner.nextInt();
//初始值不为0
int result = 1;
//循环递减
for (int j = i; j > 1; j--) {
result *= j;
}
System.out.println(result);
}
}
/***
* 从控制台接收一个正整数,判断是是否是质数
* 质数:大于1的自然数,除了1和本身以外,不再有其他的因素的自然数
* 因数:
* 3*5=15;
* 3和5都是15因数
* 2,3,4,5,6,7中,2,3,4,5,7都是质数
*/
/**
* 假设输入是:7
* 7/1 不用判断
* 7/2 需要判断
* 7/3 需要判断
* 7/4 需要判断
* 7/5 需要判断
* 7/6 需要判断
* 7/7 不用判断
* 所以7 是质数 ,除1和本身除外
*/
class HomeWork4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数字");
int num = scanner.nextInt();
boolean zhiShu = true;
for (int i = 2; i < num; i++) {
if (num % 2 == 0) {
zhiShu = false;
break;
}
}
System.out.println(num + (zhiShu ? "是" : "不是") + "质数");
}
}
/**
* 从键盘输入一个正整数,该正整数作为行数,输出以下图形
* <p>
* *
* ***
* *****
* *******
* *********
* 输入5,打印上的5行
* <p>
* 空格的规律:
* 1行:4个空格
* 2行:3个空格
* 3行:2个空格
* 2行:1个空格
* 1行:0个空格
* <p>
* *的规律:
* 1行:1个
* 2行:3个
* 3行:5个
* 行号*2-1
*/
class HomeWork5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个正整数作为行数");
int rows = scanner.nextInt();
//6行循环6次
for (int i = 1; i < rows; i++) {
//在这里将一行全部输出
//使用循环输出*和空格
for (int j = 0; j < rows - i; j++) {
System.out.print(" ");
}
//n循环n次数i
for (int k = 0; k < i * 2 - 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
/**
* 小芳的妈妈每天给她2.5块钱,她都会存起来,但是,每当这一天是存钱的第5天,或者5的倍数的话,都会花去6元,请问,经过多少天,消防才可以存到100元/
*/
class HomeWork6 {
public static void main(String[] args) {
//定义一个默认初始化变量值
int day = 0;
double money = 0.0;
while (money < 100) {
day++;//天数+1
money += 2.5;//钱加2.5
//天数是5的倍数,那么花去6元
if (day % 5 == 0) {
money -= 6.0;
}
}
System.out.println(day + "天" + "存了" + money + "钱");
}
}
/**
* 一个数如果恰好等于它因子之和,这个数就是完整的,例如,6=1+2+3,编程呢个找出1000内所有的完数
* <p>
* 什么完数:一个数字恰好等于它因子之和
*/
class HomeWork7 {
public static void main(String[] args) {
//1不是完数,从2开始
for (int i = 2; i <= 1000; i++) {
int sum = 0;
for (int j = 1; j <= i / 2; j++) {
if (i % j == 0) {
sum += j;
}
}
if (i == sum) {
System.out.println(i);
}
}
}
}