嵌套for循环+while+do-while+变量
1 嵌套for循环
1.1 概述
根据外层的条件,判断里层能否执行,如果能执行,就把里层代码都循环完毕后,再继续执行外层,继续判断。。
1.2 形式
for(…){
for(…){
}
}
1.3 入门案例
package day0000;
public class T {
public static void main(String[] args) {
// f1();
f2();
}
//总结1:当i=1时,j取到了所有满足条件的数据,1,2,3,4,5。
//也就是说外循环执行1次,内循环执行多次
private static void f1() {
for(int i=1;i<=3;i++){//外循环
System.out.println("i="+i);//1,2,3
for(int j=1;j<=5;j++){//内循环
System.out.println("j="+j);//1,2,3,4,5
}
}
}
//总结2:外循环控制行,内循环控制列
private static void f2() {
for(int i=1;i<=3;i++){
for(int j=1;j<=5;j++){
System.out.print("*");
}
System.out.println();
}
}
}
1.4 练习1:打印正方形
//正方形
for(int i=1;i<5;i++){
for(int j=1;j<5;j++){
System.out.print("*");
}
System.out.println();
}
1.5 练习2:打印左直角三角形
*
**
***
****
*****
//正直角三角形
private static void f4() {
for (int i = 0; i < 5; i++) {//外循环,控制行,是一定的
for (int j = 0; j <= i; j++) {//内循环,列是不固定的,是递增的
System.out.print("*");//保证第一行打印出来一个*,注意条件
}
System.out.println();
}
}
1.6 练习3:打印99乘法表
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
//99乘法表
private static void f4() {
for (int i = 1; i < 9; i++) {//外循环,控制行,是一定的
for (int j = 1; j <= i; j++) {//内循环,列是不固定的,是递增的
System.out.print(i+"*"+j+"="+i*j+" ");//保证第一行打印出来一个*,注意条件
}
System.out.println();
}
}
1.7 break和continue
用来终止循环,可以用两种方式
1.7.1 形式
break: 中断当前循环,简单粗暴
for(){
代码1
if(条件){
代码3…
break;//如果成立,直接跳出这个for循环
}
代码2…
}
continue:跳出本次循环,进入下一轮
for(){
代码1
if(条件){
代码3…
continue;//如果成立,跳出本次for循环,进入下一轮
}
代码2…
}
1.7.2 练习1:找数字88
接收用户输入的100次数字,如果不是88继续输入,找到88就返回
package day003;
import java.util.Scanner;
public class Test4_breakcontinue {
public static void main(String[] args) {
f2();
}
//找88
private static void f2() {
for(int i=1;i<=100;i++){
//一直输入…
int j = new Scanner(System.in).nextInt();
if(j!=88){
continue;//继续输入
}
if(j==88){
System.out.println("找到了88...");
break;
}
}
}
}
2 循环结构2:while
先判断,再执行
2.1 形式
while(执行条件){
代码…
}
2.2 练习1:猜数字
产生一个随机数,和用户一直在输入的数字比较。
package day004;
import java.util.Random;
import java.util.Scanner;
public class Test5_猜数字 {
public static void main(String[] args) {
System.out.println("猜1~1000的随机数");
//系统产生随机数,从0开始,要从1开始就加1
int i = new Random().nextInt(1000)+1;
System.out.println(i);
while(true){
//接收用户输入的值
int sc = new Scanner(System.in).nextInt();
//判断
if(sc>i){
System.out.println("大");
}else if(sc<i){
System.out.println("小");
}else{
System.out.println("right");
break;
}
}
}
}
3 循环结构3:do-while
先执行,再判断
3.1 形式
do{
代码…
}while(执行条件);
3.2 练习1:猜数字
产生一个随机数,和用户一直在输入的数字比较。
package day004;
import java.util.Random;
import java.util.Scanner;
public class Test5_猜数字 {
public static void main(String[] args) {
System.out.println("猜1~1000的随机数");
//系统产生随机数,从0开始,要从1开始就加1
int i = new Random().nextInt(1000)+1;
System.out.println(i);
while(true){
//接收用户输入的值
int sc = new Scanner(System.in).nextInt();
//判断
if(sc>i){
System.out.println("大");
}else if(sc<i){
System.out.println("小");
}else{
System.out.println("right");
break;
}
}
}
}
4 变量
4.1 概念
可以改变的数,称为变量。一般通过三部分来描述一个变量。变量类型,变量名,变量值。其中三部分都是可以改变的,根据需要来确定即可。
变量的使用原则:就近原则。尽量控制到最小范围。。
4.2 局部变量
定义在方法里,或者局部代码块中。
注意:必须手动初始化,来分配内存。如:int i=5;
作用域也就是方法里或者局部代码块里,方法运行完内存就释放了。
4.3 成员变量
定义在类里。
注意:不用初始化,也会自动被初始化成默认值。
作用域是整个类中,类消失了,变量才释放。
基本类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
boolean | false |
4.4 测试
package cn.tedu.arrays;
public class Test2_Variable {
//1、成员变量:在类里方法外是
//作用范围就是整个类里
//可以不初始化,也会有默认值
int age = 20;
int sum = 30;
public static void main(String[] args) {
//2局部变量:在方法里是
//作用范围就是方法里,出了这个方法就不认识了
//必须初始化
int sum = 10;
System.out.println(sum);//10
//3、变量的就近原则,附近有同名的会去执行最近的
System.out.println(sum);//10
}
}
5 拓展
5.1 三种循环的区别
三种循环都可以互相代替
1、 for:知道循环次数
2、 while/do while:当循环次数不确定时
3、 while:先判断,不符合规则,不执行代码
4、 do while:代码最少被执行一次,再去判断,符合规则,再次执行代码
5.2 打印右直角三角形
*
**
***
****
*****
package day999;
public class a {
public static void main(String[] args) {
//输出5行
for(int i=1;i<=5;i++){
//空格三角
for(int x=5;x>i;x--){
System.out.print(" ");
}
//*号三角
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
5.3 打印全三角形
*
***
*****
*******
*********
package day999;
public class a {
public static void main(String[] args) {
//打印5行
for(int i=1;i<=5;i++){
//打印空格的倒三角
for(int j=5;j>=i;j--){
System.out.print(" ");
}
//打印*号的正三角
for(int k=1;k<=i*2-1;k++){
System.out.print("*");
}
System.out.println();
}
}
}