JAVA基本语法Day5

JAVA基本语法Day5,第1张

JAVA基本语法Day5

JAVA基本语法day5
  • 程序流程控制
    • 顺序结构
    • 分支结构
    • 循环结构
  • 顺序结构
  • 分支结构
    • if-else结构
      • 分支结构:if-else使用说明
      • Scanner
      • if-else语句应用举例
      • 练习
    • switch-case
      • 例题:
      • 练习题
      • switch和if语句的对比
  • 循环结构
    • 循环的分类
    • 循环语句的四个组成部分
    • for循环
      • for循环应用实例
      • for语句练习

程序流程控制

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块

其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:

  • 顺序结构
  • 分支结构
  • 循环结构
顺序结构

程序从上到下逐行执行,中间没有任何判断和跳转。

分支结构

根据条件,选择性地执行某段代码。
有if…else和switch…case两种分支语句

循环结构

根据循环条件,重复性执行某段代码。
有while、do…while、for三种循环语句
注意:jdk1.5提供了foreach循环,方便的变量集合、数组元素

顺序结构

JAVA中定义成员变量时采用合法的向前引用:
如:

public class Test{ 
int num1 = 12; 
int num2 = num1 + 2;
}

错误形式:

public class Test{ 
int num2 = num1 + 2; 
int num1 = 12;
}
分支结构 if-else结构

if语句的暗中形式:

分支结构:if-else使用说明
  • 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
  • 语句块只有一条执行语句时,一对{ }可以省略,但建议保留
  • if-else语句结构,根据需要可以嵌套使用
  • 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
  • 当多个条件是“互斥”是,条件判断语句及执行语句间顺序无所谓
  • 当多个条件是“包含”关系时,“范围小上范围大下/子上父下”
Scanner

1:导包
import java.util.Scanner;
2.scanner的实例化
Scanner [对象名] = new Scanner(System.in);
3.调用Scanner类的相关方法,来获取指定类型的变量
int num = 对象名.nextInt();

if-else语句应用举例
public static void main(String args[]){ 
int age = 75; 
if (age< 0) { 
	System.out.println("不可能!");
} else if (age>250) { 
	System.out.println("是个妖怪!");
} else { 
	System.out.println(“人家芳龄 " + age +" ,马马乎乎啦!");
	}
}

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

import java.util.Scanner;
public class SignTest{
	public static void main(String[] args){
		System.out.print("请输入岳小鹏的成绩:");
		Scanner s = new  Scanner(System.in);
		int grade = s.nextInt();
		if (grade == 100) {
			System.out.println("BMW");
		}else if (grade >= 80) {
			System.out.println("iphone xs max");
		}else if (grade >= 60) {
			System.out.println("Ipad");
		}else {
			System.out.println("无");
		}
	}
}
练习

1)编写程序,声明2个int型变量并赋值。判断两数之和,如果大于等 于50,打印“hello world!”

import java.util.Scanner;
public class SignTest{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入第一个值");
		int num1 = s.nextInt();
		System.out.println("请输入第二个值");
		int num2 = s.nextInt();
		if(num1 + num2 >=50)
		{
			System.out.println("hello world!");
		}
	}
}
  1. 编写程序,声明2个double型变量并赋值。判断第一个数大于10.0, 且第2个数小于20.0,打印两数之和。否则,打印两数的乘积。
import java.util.Scanner;

public class SignTest {
	public static void main(String[] args) {
		double num1, num2;
		Scanner s = new Scanner(System.in);
		num1 = s.nextDouble();
		num2 = s.nextDouble();
		if (num1 > 10 && num2 < 20) {
			System.out.println(num1 + num2);
		} else {
			System.out.println(num1 * num2);
		}
	}
}
  1. 我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每 一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗 相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
    编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人
    类的年龄。如果用户输入负数,请显示一个提示信息。
import java.util.Scanner;

public class SignTest {
	public static void main(String[] args) {
		int year;
		Scanner s = new Scanner(System.in);
		year = s.nextInt();
		if (year < 0) {
			System.out.println("你家狗还没投胎?");
		} else if (year <= 2) {
			System.out.println(year * 10.5);
		} else {
			System.out.println(21 + (year - 2) * 4);
		}
	}
}

大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出 一定的条件:高:180cm以上;富:财富1千万以上;帅:是。

  • 如果这三个条件同时满足,则:“我一定要嫁给他!!!”
  • 如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
  • 如果三个条件都不满足,则:“不嫁!”
import java.util.Scanner;

public class SignTest {
	public static void main(String[] args) {
		int height;
		double wealth;
		boolean cool;
		Scanner s = new Scanner (System.in);
		System.out.println("请输入身高");
		height = s.nextInt();
		System.out.println("请输入财富:(千万)");
		wealth = s.nextDouble();
		System.out.println("帅否(true/false)");
		cool = s.nextBoolean();
		
		if(height > 180 && wealth > 1 && cool) {
			System.out.println("我一定要嫁给他!!!");
		}else if(height > 180 || wealth > 1 || cool){
			System.out.println("嫁吧,比上不足,比下有余。");
		}else {
			System.out.println("不嫁!");
		}
		
		
	}
}
switch-case


注意:

  • switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举(jdk5.0),String(jdk7.0);

  • case子句中的值必须是常量,不能是变量名或不确定的表达式值;

  • 同一个switch语句,所有case子句中的常量值互不相同;

  • break语句用来执行完一个case分支后使程序跳出swich语句块;如果没有break,程序会顺序执行到switch结尾

  • default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default

  • 如果switch-case语句中执行语句相同,可以考虑合并,如下面第二题

例题:

1.使用switch把小写类型的char型转为大写。只转换a,b,c,d,e,其它的输出“other”。
提示:String word = scan.next(); char c = word.charAt(0);switch©{}

public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String word = scan.next(); 
		char c = word.charAt(0);
		switch (c) {
		case 'a':
			System.out.println("A");
			break;
		case 'b':
			System.out.println("B");
			break;
		case 'c':
			System.out.println("C");
			break;
		case 'd':
			System.out.println("D");
			break;
		case 'e':
			System.out.println("E");
			break;
		default:
			System.out.println("other");
			break;
		}
	}

2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int grade = scan.nextInt();
		switch (grade/10) {
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("不及格");
			break;
		case 6:
		case 7:
		case 8:
		case 9:
		case 10:
			System.out.println("及格");
			break;
		default:
			System.out.println("other");
			break;
		}
	}
}

其实还有更优解,上面那段代码,单纯是为了展示省略的功能

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int grade = scan.nextInt();
		switch (grade/60) {
		case 0:
			System.out.println("不及格");
			break;
		case 1:
			System.out.println("及格");
			break;
		default:
			System.out.println("other");
			break;
		}
	}
}

3.根据用于指定月份,打印该月份所属的季节。 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int month = scan.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("输入非法数值");
			break;
		}
	}
}

4 . 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序 输出输入的日期为2019年的第几天。

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入2019年的month:");
		int month = scan.nextInt();
		System.out.println("请输入2019年的day:");
		int day = scan.nextInt();
		
		//定义一个变量来保存总天数
		//方式一:(太过冗余)
		
		int sumDays = 0;
		
		
		//方式二:(同样过于冗余)
		
		
		
		//方式三
		switch(month){
		case 12:
			sumDays += 30;
		case 11:
			sumDays += 31;
		case 10:
			sumDays += 30;
		case 9:
			sumDays += 31;
		case 8:
			sumDays += 31;
		case 7:
			sumDays += 30;
		case 6:
			sumDays += 31;
		case 5:
			sumDays += 30;
		case 4:
			sumDays += 31;
		case 3:
			sumDays += 28;
		case 2:
			sumDays += 31;
		case 1:
			sumDays += day;
		}

		System.out.println("2019年" + month + "月" + day + "日是当年的第" + sumDays + "天");
		
	}
}

练习题

练习1:
从键盘分别输入年、月、日,判断这一天是当年的第几天 注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除 或
2)可以被400整除

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年份");
		int year = scan.nextInt();
		if(year % 4 ==0 && year % 100 != 0)
		{
			System.out.println("闰年");
		}
		else {
			System.out.println("平年");
		}
		System.out.println("请输入月份");
		int month = scan.nextInt();
		System.out.println("请输入天");
		int day = scan.nextInt();
		
		int sumDays = 0;
		switch(month){
		case 12:
			sumDays += 30;
		case 11:
			sumDays += 31;
		case 10:
			sumDays += 30;
		case 9:
			sumDays += 31;
		case 8:
			sumDays += 31;
		case 7:
			sumDays += 30;
		case 6:
			sumDays += 31;
		case 5:
			sumDays += 30;
		case 4:
			sumDays += 31;
		case 3:
			if(year % 4 ==0 && year % 100 != 0 && year % 400 == 0)
			{
				sumDays += 29;
			}
			else {
				sumDays += 28;
			}
		case 2:
			sumDays += 31;
		case 1:
			sumDays += day;
		}
		System.out.println("2019年" + month + "月" + day + "日是当年的第" + sumDays + "天");
	}
}

练习2:
使用swich语句改写下列if语句:

int a = 3; 
int x = 100; 
if(a==1) 
	x+=5;	
else if(a==2) 
	x+=10;
else if(a==3) 
	x+=16;
else
	x+=34;

改写:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		int a = 3;
		int x = 100;
		switch(a)
		{
		case 1:
			x += 5;
			break;
		case 2:
			x += 10;
			break;
		case 3:
			x += 16;
			break;
		default:
			x += 34;
			break;			
		}
	}
}

练习3:
编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的 值输出其对应的成绩等级:
score>=90 等级: A
70<=score<90 等级: B
60<=score<70 等级: C
score<60 等级: D

方式一:使用if-else

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int score = scan.nextInt();
		if(score >= 90)
		{
			System.out.println("A");
		}
		else if(score >= 70)
		{
			System.out.println("B");
		}
		else if(score >= 60)
		{
			System.out.println("C");
		}
		else {
			System.out.println("D");
		}
	}

方式二:使用switch-case: score / 10: 0 - 10

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int score = scan.nextInt();
		switch(score / 10)
		{
			case 0:
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
				System.out.println("D");
				break;
			case 6:
				System.out.println("C");
				break;
			case 7:
			case 8:
				System.out.println("B");
				break;
			case 9:
			case 10:
				System.out.println("A");
				break;
			default:
				System.out.println("非法输入");
			
		}
	}
switch和if语句的对比
  • 如果判断的具体数值不多,而且符号byte/short/char/int/String/枚举等几种类型。虽然两个语句都可以使用,建议使用switch语句。因为效率稍高。
  • 其他情况:对区间判读,对结果为boolean类型判读,使用if,if的使用范围更广。也就说,使用switch-case的,都可以改写为if-else。反之不成立

练习:
编写一个程序,为一个给定的年份找出其对应的中国生肖。中国的生肖基于12年一个周期, 每年用一个动物代表:rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、rooster、dog、pig。
提示:2019年:猪 2019 % 12 == 3

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.print("请输入年份:");
		int year = scan.nextInt();
		switch(year % 12)
		{
		case 0:
			System.out.println("猴");
			break;
		case 1:
			System.out.println("鸡");
			break;
		case 2:
			System.out.println("狗");
			break;
		case 3:
			System.out.println("猪");
			break;
		case 4:
			System.out.println("鼠");
			break;
		case 5:
			System.out.println("牛");
			break;
		case 6:
			System.out.println("虎");
			break;
		case 7:
			System.out.println("兔");
			break;
		case 8:
			System.out.println("龙");
			break;
		case 9:
			System.out.println("蛇");
			break;
		case 10:
			System.out.println("马");
			break;
		case 11:
			System.out.println("羊");
			break;
		}
		
	}
}

循环结构

在某些条件满足的情况下,反复执行特定代码的功能

循环的分类
  • for循环
  • while循环
  • do-while循环
循环语句的四个组成部分
  • 初始化部分
  • 循环条件部分
  • 循环体部分
  • 迭代部分
for循环
  • 语法格式
    for(①初始化部分;②循环条件部分;④迭达部分){
          ③循环体部分;
    }
  • 执行过程:
    1-2-3-4-2-3-4-2-3-4-……-2
  • 说明
    循环条件部分为boolean类型表达式,当值为false时,退出循环
    初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
    迭代步伐可以有多个变量更新,用逗号分隔
    练习:
		int num = 1;
		for(System.out.print('a');num <= 3;System.out.print('c'),num++){
			System.out.print('b');
		}
		//输出结果:abcbcbc
for循环应用实例
public class ForLoop { 
	public static void main(String args[]) { 
		int result = 0; 
		for (int i = 1; i <= 100; i++) { 
			result += i;
		} 
		System.out.println("result=" + result);
	}
}

例题1:
编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行 上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。

public static void main(String[] args) {
		
		for(int i = 1;i <= 150;i++){
			
			System.out.print(i + "  ");

			if(i % 3 == 0){
				System.out.print("foo ");
			}

			if(i % 5 == 0){
				System.out.print("biz ");
			}

			if(i % 7 == 0){
				System.out.print("baz ");
			}

			//换行
			System.out.println();

		}

	}
for语句练习

1.打印1~100之间所有奇数的和

import java.util.Scanner;

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

2.打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数 器的思想)

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		int i;
		int sum = 0;
		int count = 0;
		for (i = 1; i <= 100; i++) {
			if (i % 7 == 0) {
				sum += i;
				count++;
			}
		}
		System.out.println("7的整数和:" + sum);
		System.out.println("7的倍数的个数" + count);
	}
}

3.输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数 字立方和等于其本身。
例如: 153 = 111 + 333 + 555

 	public static void main(String[] args){
 		for(int i=100;i<=999;i++){
 			int a=i/100;          //存放百位
 			int b=i%100/10;       //存放十位
 			int c=i%10;           //存放个位
 			if(i==(a*a*a+b*b*b+c*c*c)){
 				System.out.println(i+" 是水仙花数");
 			}
 		}
 	}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5672841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存