java中的条件、循环和scanner类

if else ;

单行逻辑大括号可以省略;但是不建议省略;

public static void main(String[] args) {
        boolean bool1 = (Math.random() * 1000) % 2 >= 1;
        System.out.println((Math.random() * 1000) % 2 + "-" +bool1);

        if(bool1) {
            System.out.println('1');
        } else {
            System.out.println("2");
            boolean bool2 = (Math.random() * 1000) % 2 >= 1;
            if(bool2)
                System.out.println("3");
            else
                System.out.println("4");

        }

        boolean bool3 = false;
        if(bool3 = true) {
            System.out.println("使用单引号,将true复制给bool3,bool3为true则执行此行");
        }
        if(bool3 = false) {
            System.out.println("使用单引号,将true复制给bool3,bool3为false则不执行此行");
        }
    }

*****字符串比较不要用 == 要用equals;

String str = “asd”; str.equals(“asd”);

“==” 表示的是不是一个东西,equals标识的是内容是否一样;

Random.java 中 :如何获取一个随机数;

public class Random {
    public static void main(String[] args) {
        // method1:Math.random();返回一个double值:[0.0,1.0)
        double d1 = Math.random();
        System.out.println(d1);

        // int i = (int)(d1 * 100);//[0,99];
        int i = (int)(d1 * 101);//[0,100];
        System.out.println(i);

        // 通用公式:获取[a, b];
//        int res = (int)(Math.random() * (b - a + 1) + a);
    }
}

// 通用公式:获取[a, b];*****

  • int res = (int)(Math.random() * (b - a + 1) + a);

switch - case :选择结构;

比较的是==;但是字符串(equals)也能进入逻辑;

switch(表达式);

表达式只能是特定的数据类型;byte/short/char/int;

可以认为就是int;见相关代码:switch.java;之后的新特性(枚举、String)

case 常量: (只能是常量)

default;是可选的而且是灵活的!!!可以放在任何位置;

但是一般都放最后;

public class SwitchTest {
    public static void main(String[] args) {
        int i1 = 99;
        switch (i1) {    //括号中是表达式,而非条件表达式;
            // case 常量1;、
            case 98:
                System.out.println("98");
                break;
            case 99:
                System.out.println("99");
            default:
                System.out.println("穿透");
                // break; //有无都一样;一般加上~?
        }

        //比较的是==;但是字符串也能进入逻辑(jdk7.0之后可以支持);
        String str = "99999";
        switch (str) {    //括号中是表达式,而非条件表达式;
            // case 常量1;、
            case "99998":
                System.out.println("98");
                break;
            default:
                System.out.println("穿透");
                // break; //有无都一样;一般加上~?
                // default;是可选的而且是灵活的!!!可以放在任何位置;(这里就不会穿透了)
            case "99999":
                System.out.println("99");

        }
		/*表达式只能是特定的数据类型;byte/short/char/int;
 		可以认为就是int;之后的新特性(枚举、String)*/

		/*double db = 99999.99;
		switch(db) {	//括号中是表达式,而非条件表达式;
			// case 常量1;、
		case 99998:
			System.out.println("98");
			break;
		case 99999.99:
			System.out.println("99");
		default:
			System.out.println("穿透");
			// break; //有无都一样;一般加上~?
		}*/

        // : 错误: 不兼容的类型: 从double转换到int可能会有损失

		/*boolean bool = true;
		switch(bool) {	//不兼容的类型: boolean无法转换为int
		case true:
			System.out.println("1");
		default:
			System.out.println("2");
		}*/

        int score = 60;
        switch (score / 60) {
            case 0:
                System.out.println("不及格");
                break;
            case 1:
                System.out.println("及格");
        }

        System.out.println("===========================");
        /*利用穿透*/

    }
}
循环结构:

.for/while/do-while循环;

–for

for(初始化条件;循环条件;迭代部分) {
循环体
}

public static void main(String[] args) {
        for(;;) {
            System.out.println("脦脼脤玫录镁拢卢碌楼麓脦脩颅禄路");
            if(true) break;
        }
        for
        (int i=0;i<10;i++,i++)
        {
            System.out.println(i);
        }


        int res = 0;
        for(int i=1;i<11;i++) {
            if(i % 2 == 0) {
                System.out.println(i);
                res+=i;
            }
        }
        System.out.println(res);

        System.out.println("===============================");
        for(int i =100;i< 1000;i++) {
            int gw = i%10;
            int sw = i / 10 % 10;
            int bw = i / 100;
            if(i == (gw*gw*gw + sw*sw*sw + bw *bw* bw)) {
                System.out.println(i);
            }
        }
    }
For
循环结构中;break;结束循环;
初始化条件
while
while(循环条件) {
循环体
迭代
}

*水仙花数;For.java;

可以和for循环相互转换;也可以使用break中断循环;
可以互相转换,就和拉姆达表达式一样可以转换;看情况使用;

do while;

do{
、、无论是否符合条件,先来执行一次。
}while();

public class WhileTest {
    public static void main(String[] args) {
        while(true) {
            System.out.println(1);
            break;
        }

        int i = 0;
        while(i < 10) {
            System.out.println(i);
            i++;
        }
        System.out.println("=========");
        int n = 13;
        int m = 14;
        for(int j = 1;;j++) {
            if((n*j) % m == 0) {
                System.out.println(n*j);
                break;
            }
        }

        do{
            // break; //不可放这里,后面会不执行,报错;
            System.out.println(1);
            break;
        } while(true);
    }
}

推荐使用:

for: 有明显的循环次数;

while: 没有明显的循环次数;

do-while: 循环块至少执行一次,考虑可以使用;

“无限循环”,嵌套循环;

不确定循环多少次时,可以使用。

while(true){

结合break使用;

};

for(;😉{

//结合break使用;

};

嵌套循环:
continue
if(i % 2 != 0) {
    continue; 
	//System.out.println(i);// 编译错误: 无法访问的语句;
}
// 放在外面就可以;
System.out.println(i);

注意: *****break和continue;后面不能加执行语句;
见代码:Looptest.java;

标签

带标签的break;continue;见代码LoopTest.java;

同目录下的java文件,不用import导包,直接使用类方法

public class LoopTest {
    public static void main(String[] args) {
        // for(){	//错误: 非法的表达式开始;
        for(;;){
            // while(true){  //和for效果相同;
            // Scanner scan = new Scanner(System.in);
            // int i = scan.nextInt();
            System.out.println(1);
            break;
        }

        //while() {	//错误: 非法的表达式开始
        while(true) {
            System.out.println(2);
            break;
        }
        System.out.println("========");
        // 嵌套循环;
        for(int i = 1;i<6;i++) {
            for(int j =0; j<i;j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("========");
        for(int i = 5;i>0;i--) {
            for(int j =0; j<i;j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("========");

        int ii =0;
        for(int i =0;i<10;i++) {
            if(i % 2 != 0) {

                continue;
                //System.out.println(i);// 编译错误: 无法访问的语句;
            }
            // 放在外面就可以;
            System.out.println(i);
        }

        label:for(int i = 0;i<10;i++) {
            for(int j =0;j<4;j++) {

                if(j > 2) {
                    continue label;
                }
                System.out.print(j);
            }
            System.out.println();
        }
    }
}

Scanner类的使用方法;

1、导包:import java.util.Scanner;

2、创建Scanner类的实例;

3、调用scanner类的方法,获取指定类型的变量;

4、关闭资源(避免泄露)。调用close;

—system.lang 包是常用的不用导包;其他包下面的都需要导包;

String str1 = scanner.next(); //具体scanner方法见文档;一般看next方法;

//scanner 没有提供获取char类型的方法;

public class ScannerTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入一个字符串: \n");
        String str1 = scanner.next(); //阻塞住下面;直到写入;
        System.out.println("str1:" + str1);

        System.out.println("请输入一个int: \n");
        // 输入类型不符合时会报错;
        int i1 = scanner.nextInt();
        System.out.println(i1);

        System.out.println("请输入一个double: \n");
        double d1 = scanner.nextDouble();
        System.out.println(d1);


        System.out.println("请输入一个boolean: \n");
        // 输入类型不符合时会报错;
        boolean bol1 = scanner.nextBoolean();
        System.out.println(bol1);

        System.out.println("请输入一个char: \n");
        char c1 = scanner.next().charAt(0); //scanner 没有提供获取char类型的方法;
        System.out.println(c1);

        // 关闭资源;
        scanner.close();
        // 输入类型不符合时会报错
    }
}
  • GC(垃圾回收) 不会认为Scanner 是一个垃圾;可能不会回收;
  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值