小仙的第四天 选择和循环结构

109 阅读3分钟

▼if结构合多重if结构
▼Scanner对象练习

▼if结构合多重if结构

在java中

if(conditon1){

}else if(conditon2){

}

但在有些语言中,elseif是写在一起的.

▼Scanner对象练习

Scanner sc = new Scanner(System.in);

如果接受串,String s=sc.next();

如果接受整数,int n=sc.nextInt();

如果串需要转换大写格式,则s.toUpperCase();

关闭sc对象,sc.close();

注意sc不能只能接受整型家族和String.

▼求平方和

n的平方 为 Math.pow(n,2);

▼获取随机数

Math.random();随机数范围为 0.0 =< Math.random < 1.0,即[0,1)

输出示例  0.5444085967267008

Math.random()*10的范围 [0,10)

Math.random()*10+1的范围 [1,11),不包含11,但包含10

Math.random()*100的范围 [0,100)

▼局部变量

局部变量的作用域只局限于定义的它的大括号内.

for(int n=1;n<=5;n++){}

对于for循环,n只局限于for的大括号内.作用类似c函数形参.for循环和while本质是一样的,while(true)就类似传参.

推测:for的语法形式,类似方法 int n=1;语句类似形参传入,形参只能在方法内调用,不能在方法外.

▼循环中局部变量每次循环完销毁

public class Circle4_7 {
	public static void main(String[] args) {
		for(int i=100;i<=300;i++) {
			int b=i/100;
			int s=i/10%10;
			int g=i%10;
			int p=b+s+g;
			int m=b*s*g;
			if(p==12 && m==42) {
				System.out.println(i);
			}
		}
	}
}

这不报错,推测:
每次循环 类似于一次函数调用,调用完销毁数据,这样下一次循环才能重新定义;

▼循环结构的特性

循环结构是结构,与方法有区别,但共性还是有的.分解开来,
1,循环结构的括号里相当于形参,形参作用域是明确的;
2,循环类似于c多次独立调用本身,独立,作用域随着单独一次调用结束而结束销毁;这也印证了有些语言存在函数静态变量,可以在多次循环之间累加;

▼上下级作用域覆盖顺序严格

java中函数内部变量不能覆盖父级变量,更严格.

外部定义b,在for中b是可以访问的,这时在for中重新定义b,则报错;有些语言是可以覆盖的,java不可用;

		int b;
		for(int i=100;i<=300;i++) {
			int b=i/100;
			int s=i/10%10;
			int g=i%10;
			int p=b+s+g;
			int m=b*s*g;
			if(p==12 && m==42) {
				System.out.println(i);
			}
		}

▼不一样的编码规范
在循环体重定义并初始化更少代码,看起来也更直观.但每次int b=i/100;是不必重新定义,只需要重新赋值即可,可以把定义部分挪到上面外部[这样就从循环中省去每次定义,仅每次赋值]:

int b;
for(int i=100;i<=300;i++) {
	b=i/100;

▼3种循环应用场景对比

for循环适用于循环次数固定的场景;

while循环适用于不知道循环次数,只知道循环条件的场景;

do-while循环同上,可以确定循环必须执行一次的场景;

▼输出星星组成的梯形练习题

package com.xian.circle;

public class Circle5_3 {
	public static void main(String[] agrs) {
		int c1_cond = 5;
		for(int c1=1;c1<=c1_cond;c1++) {
			//控制循环输出空格
			for(int c2=1;c2<=5-c1;c2++) {
				System.out.print(' ');
			}
			//控制循环输出星星
			//1 3,2 5,3 7,4 9
			for(int c3=1;c3<=c1+c1+1;c3++) {
				System.out.print('*');
			}
			System.out.println();
		}
	}
}

▼break和continue比较

break可以用在switch和循环语句当中;continue只能用在循环语句当中;

▼增强型for循环

增强型for循环,不需要下标,也不需要循环条件,遍历结束循环执行结束.

如果需要根据下标定位,则使用普通for循环.

for(int n:intAry){

  System.println(n)

}