java流程控制知识点(百钱买百鸡和等腰三角形案例)

一.If条件分支结构
例:

Package day3
Import java.until Scanner;
Public class TestsIf{
	Public static void main(String[] args){
		//用户输入一个整数
		System.out.println(“请输入一个整数”);
	//If (布尔表达式){代码块}
		Scanner s = new scanner(System .in);
		Int n = s.nextInt();
		if(n%2==0){
			System.out.println(“偶数”);
		}
	}
}

语法1:(先判断,正确则执行)
if(布尔表达式){
//代码块
}
后续代码……

语法2:(先判断:正确→1,错误→2)
If(布尔表达式){
//代码块1
}else{
//代码块2
}
后续代码……

语法3:(多重判断)
If(布尔表达式1){
//代码块1
}else if(布尔表达式2){
//代码块2
}else if(布尔表达式3){
//代码块3
}else{
//代码块4
}

语法4:(嵌套)
If(外层表达式){
If(内层表达式){
//内层代码块1
}else{
//内层代码块2
}
}else{
//外层代码块
}

二.Switch条件表达式
Package day3;
Public class TestSwitch{
Public static void main (String[] args){
//能直接转换为int的数据类型(byte short int char)
//在JDK1.7版本中,Switch可以用字符串表达式“string”
/Switch(int表达式){
case 值1:代码块1;break;
case 值2:代码块2 ;break;
default:代码块
/ // default可以写在任意位置但是除了在最后一行其他位置必须写break
}
java.until.Scanner s = new java.until.Scanner(System.in);
int a = s.nextInt();
switch(a){
//可以让多个值共享一行代码,当输入0和1时,都得出1
//如果没有加break,输入1,打印的是1、2、3、others

Switch(n){
	case 1:System.out.println(1);break;//跳出
	case 2:System.out.println(2);break;
	case 3:System.out.println(3);break;
	default:System.out.println(“others”);
}
String s = “abc”;
Switch(s){
	case “abc”:System.out.println(“hehe”);
	break;
	case “hello”:System.out.println(“xxx”);
break;
} 

三.循环结构
概念:通过某个条件,重复的执行一段逻辑代码
(1)While循环
While(布尔表达式){
//逻辑代码(循环操作)
}

(2)do while循环(先执行,再进行布尔表达式的判断)
do{
//逻辑代码(循环操作)
}while(布尔表达式);
Eg:

package day3;
public class TestLoop{
public static voin main(String[] args){
		int i = 1;
		int result = 0;
		while(i<=100){
			result+=i
			i++;
		}
		/*
do{
	result+=i;
	i++;
}while(i<=100);
*/
		System.out.println(result)
	}
}

(3)for循环(确定循环次数)
for(初始部分;循环条件;迭代部分){
//循环操作
}
//定义可以省略,迭代部分可以写在逻辑代码后,如果省略循环换条件,则变为死循环

for(int i = 1;i<=100;i++){
	result+=i;
}
System.out.prinltn(result);

注释:一般在确定循环次数时使用for循环,在不确定循环次数时使用while循环。
(4)流程控制的关键字
break:终止、跳出switch、循环结构
continue:跳出本次循环
eg:

package day3;
	public class Test{
		public static void main(String[] args){
/*loop:for(int = 1;i<=10;i++){
	//if(i==9)break;得出的结果是12345678
	//if(i==9)continue;得出的结果是124567810
	System.out.println(“Hello World”+1);
	}*/
loop:for(int i =1,i<=10;i++){
			for( int j =1;j<=5,j++){
//可以给for循环起名字,当break loop时,是跳出整个被命名为loop的for循环。
				if(i==4&&j==3)break loop;
				System.out.print(“i=+i“  j=+j+/t”);
			}
		//换行
			System.out.println();
			}
		}
	}
}

(5)局部变量
概念:声明在函数内部的变量,必须先赋值在使用
作用范围:定义行开始到所在的代码块结束
注意:多个变量,在重合的作用的范围内,不可出现重名
Eg1:

package day3;
public class Test1{
	public static void main(String[] args){
//声明赋值
		int a;
		if(xxx){
			a=10(错误,如果a满足条件,则a被赋值,如果不满足,则没有被赋值)
		}
	}
}

Eg2:

package day3;
public class Test1{
	public static void main(String[] args){
//定义行开始到所在的代码块结束
		if(true){
		int b=10
		}
System.out.println(b)(错误,b已经不再函数里面定义已经结束)
	}
}

Eg3:

package day3;
public class Test1{
	public static void main(String[] args){
//不允许在重合范围内,局部变量名重合
		int a = 10;
		System.out.println(a)
		if(true){
		int a=10
		System.out.println(a)(错误,第一个a作用范围在第四行扫第十行,第二个a作用范围在第七行到第九行)
		}
	}
}

注释:语法当中不允许一个代码的开始点和结束点是重合的
Eg4:

if(true)int i =10;
错误应该改为:
if(true){
	int i =10;
}

题目1:100块钱,公鸡3块钱一只,母鸡2块钱一只,小鸡一块钱3只

Package Test2;
public class Test{
	public static viod main(String[] args){
		for(int a =0;a<=100;a++){
			for(int b =0;b<=100;b++){
				int c = 100-a-b;
				if(c%3=0)continueint m =a*3+b*2+c/3;
				if(m==100){
				System.out.println(“公鸡有”+a“   母鸡有”+b“   小鸡有”+c);
				}
			}
		}
	}
}

优化后的代码:

package Test1;
public class Test{
	public static void main(String[] agrs){
//假设全买公鸡
		for(int a = 0;a<=33;a++){
//避免每一次内部循环都对(100-3a)/2重复运算
			int maxb=(100-3a)/2;
//除去公鸡最多能买多少只母鸡
			for(int b=0;b<=maxb;b++){
//除去公鸡和母鸡的个数的得出小鸡个数
				int c = 100-a-b;
//小鸡的个数必须是整数
				if(c%3=0)continue//一共花了100元
				int m = 3a+2b+3/c;
				if(m==100){
					System.out.println(“公鸡有”+a“   母鸡有”+b“   小鸡有”+c);
				}
			}
		}
	}
}

题目二:请在屏幕上输入一个等腰三角形
找规律:设置需要几列
假设等腰三角形的高是i,那么每一列的所需要的空格数为i-1,所需要的是2i-1

package Test2;
import java.until.*;
public class Test2{
	public static void main(String[] args){
//输设置等腰三角形的高
		System.out.println(“请设置等腰三角形的高”)
		scanner s = new Scanner(System.in);
		int n = s.nextInt();
//打印所需要的列数
		for(int i = 1;i<n;i++){
//打印所需要的空格数
			for(int j =1;j<=n-1;j++){
				System.out.print(‘ ’);
			}
//打印所需要的*个数
			for(int j =1;j<=n-1;j++){
				System.out.print(*);
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值