Java基础 杂记2

Java基础 杂记2,第1张

Java基础 杂记2 分支: 单分支 if
// 过多的if影响代码可读性,建议最多叠3层
if(){

}else if(){

}else {

}
多分支 switch
switch( 表达式 ){
	case 常量1:语句1;
	break;
	case 常量2:语句2;
	break;
	...
	[ default: 语句n ;]
}

细节:
1、case子句中的值必须是常量。
2、不加break则会继续往下执行。
3、case后的常量类型需跟表达式数据类型一致。
4、没有匹配的case时,执行default
5、switch(表达式) 中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String) 中的其中一个

switch和if如何选择?

1、判断的具体数值不多,而且符合那6种类型,建议使用switch。
2、对区间判断,对结果为boolean类型判断,使用if,if使用范围更广。

for
for(循环变量初始化; 循环条件; 循环变量迭代){
	循环 *** 作(可以多条语句);
}

案例:
输入年月日,输出为该年的第几天。

import java.util.Scanner;
public class Hello{
	public static void main(String[] args){
		//判断给定一天是这一年的第几天
		Scanner in = new Scanner(System.in);
		int year = in.nextInt();
		int month = in.nextInt();
		int day = in.nextInt();
		int num = 0;
		for(int i = 1; i < month; i++){
			if ( i == 2 ){
				// 闰年
				if (( year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0)
					num += 29;
				else num += 28;
			}
			else {
				if(i != 4 || i != 6 || i != 9 || i != 11)
					num = num + 31;
				else num = num + 30;
			}
		}
		num += day;
		System.out.println(year+"年"+month+"月"+day+"日是该年第"+num+"天");
	}
}
while 循环

先判断再执行

while(循环条件){
	循环体(语句);
	循环变量迭代;
}

//eg:
int i = 1;
while( i <= 10 ){
	System.out.println("Hello"+i++);
}
do…while 循环
do{
	循环体(语句);
	循环变量迭代;
}while(循环条件);

注意:
1、先执行再判断,至少执行一次
2、do while是关键字
3、最后有个分号

案例

案例1:九九乘法表

//打印九九乘法表
//外函数控制行,内函数控制列
for(int i = 1; i <= 9; i++){
	for(int j = 1; j <= i; j++){
		System.out.print(j + " * " + i + " = " + (i * j)+"t");
	}
	System.out.println();
}

打印结果:

案例2 金字塔、菱形

// 实心金字塔
// 每行i*2-1颗星,n-行数个空格
System.out.println("输入实心金字塔的行数:");
Scanner in = new Scanner(System.in);
int row = in.nextInt();
for (int i = 1; i <= row; i++){
	//输出空格
	for(int j = row-i; j > 0; j--){
		System.out.print(" ");
	}
	//输出星
	for (int j = i*2-1; j > 0; j--){
		System.out.print("*");
	}
	System.out.println();
}

// 与实心不同的是,除了首尾行,中间行只有首尾有星。
// 即,中间再输出(i-1)*2-1个空格
// 可以看作大金子塔内挖空了一个金字塔
System.out.println("输入空心金字塔的行数:");
int row2 = in.nextInt();
for (int i = 1; i < row; i++){
	//输出空格
	for(int j = row-i; j > 0; j--){
		System.out.print(" ");
	}
	// 与实心不同的是,除了首尾行,中间行只有首尾有星。
	System.out.println("输入空心金字塔的行数:");
	int row2 = in.nextInt();
	for (int i = 1; i <= row; i++){
		//输出空格
		for(int j = 1; j <= row-i; j++){
			System.out.print(" ");
		}
		for(int j = 1; j <= i*2-1; j++){
			if(j == 1 || j == i*2-1 || i == row)
				System.out.print("*");
			else System.out.print(" ");
		}
		System.out.println();
	}
}

打印结果:

// 打印空心菱形
System.out.println("输入行数:");
int row3 = in.nextInt();
for (int i = 1; i <= row; i++){
	//输出空格
	for(int j = 1; j <= row-i; j++){
		System.out.print(" ");
	}
	for(int j = 1; j <= i*2-1; j++){
		if(j == 1 || j == i*2-1 )
			System.out.print("*");
		else System.out.print(" ");
	}
	System.out.println();
}
for (int i = 1; i <= row3; i++){
	//输出空格
	for(int j = 1; j <= i; j++){
		System.out.print(" ");
	}
	for(int j = 1; j <= (row3-i)*2-1; j++){
		if(j == 1 || j == (row3-i)*2-1)
			System.out.print("*");
		else System.out.print(" ");
	}
	System.out.println();
}

打印结果:

跳转控制语句 break

终止语句块。
break可以和标签使用

label1:{
	label2:{
		label3:{...break labeln}
	}
}

1、break语句可以通过 label 来指定退出哪层。
2、label1是标签,名字由程序员指定。
3、在实际开发中,尽量不要使用标签。(降低可读性)
4、若没有指定标签,默认退出最近循环体。

案例

//3次输入机会,当输入用户为丁真,密码为666时,登陆成功。
//涉及:字符串匹配,for循环,break跳转控制语句
int n = 3;
Scanner in = new Scanner(System.in);
while(n-- > 0){
	System.out.println("请输入用户名:");
	String a = in.next();
	System.out.println("请输入密码:");
	String b = in.next();
	if( a.equals("丁真") && b.equals("666")){
		System.out.println("登陆成功");break;
	}else 
		System.out.println("登录失败,还有"+n+"次机会");
}
continue

1、结束本次循环,继续执行下一次循环。
2、也可指明要跳过哪层循环。

return

使用在方法,表示跳出所在方法。

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存