从头学Java-5 流程控制、循环

用户交互Scanner

  • java.until.Scanner是Java5的新特性,我们可以通过Scanner类来获取用户输入

  • 基本语法:

    Scanner s = new   Scanner (System.in);
    
    
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们需要使用hasNext() 与hasNextLine()判断是否还有输入的数据

    next() 和 nextline()区别(字符型)

    • 1.next()不能得到带空格的字符串

    • 2.nextLine()以Enter作为结束符

    • 3.nextLine()可以获取空白

nextInt() int 型

流程控制

选择结构

if 单选择结构

public class Demo_if_1 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入:");
        String str= scanner.nextLine();
        if(str.equals("hello")){
            System.out.println("就是hello");

        }
        System.out.println("下一位");
        scanner.close();
        boolean a=true;
        if(a==true){
            System.out.println("if单循环");

        }
    }
}

if双选择结构

package com.chen.base.choose;

import java.util.Scanner;

public class Demo_if_2 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入:");
        String str= scanner.nextLine();
        if(str.equals("hello")){
            System.out.println("就是hello");

        }
        else
        System.out.println("下一位");
        scanner.close();
    }
}

if多选择结构

public class Demo_if_3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩:");

        int grade = scanner.nextInt();
        if (grade<=100&&grade>=0) {
            if (grade <= 100 && grade >= 80) {
                System.out.println("您的成绩为优");


            } else if (grade < 80 && grade >= 70) {
                System.out.println("您的成绩为良");

            } else if (grade < 70 && grade >= 60) {
                System.out.println("您的成绩为中");
            } else if (grade < 60 && grade >= 0) {
                System.out.println("很遗憾未合格");
            }
        }else{
            System.out.println("请输入正确成绩!!!!");
        }
        scanner.close();
    }
    }

 

使用switch多选择结构来判断成绩

public static void main(String[] args) {
        /*
	要求:
			1、输入一个学生的考试成绩(分数),利用成绩的值判断学生等级。
			2、等级:
				满分:[100]
				优秀:[90-99]
				良好:[80-89)
				中等:[70-79)
				及格:[60-69)
				不及格:[0-59)
			3、要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。
	使用switch语句实现。
*/
                Scanner input = new Scanner(System.in);  
               //思路1.我们需要自主输入一个学生成绩的分数
                System.out.println("请输入学生成绩,我将为您判断他的等级");
                double score = input.nextDouble();        
                //思路2.我们需要创建一个变量,用来存储学生成绩分数,包含小数
                switch((int) score/10){					 
                        //思路3.利用成绩的值来进行判断学生所在的等级区间,因为/具有舍去小数
                    case 0:case 1:case 2:case 3:case 4:case 5:
                        System.out.println(score + "分,不及格");
                        break;
                    case 6:
                        System.out.println(score + "分,及格");
                        break;
                    case 7:
                        System.out.println(score + "分,中等");
                        break;
                    case 8:
                        System.out.println(score + "分,良好");
                        break;
                    case 9:
                        System.out.println(score + "分,优秀");
                        break;
                    case 10:
                        if(score==100){		//思路4.将101到109的分数去掉
                            System.out.println(score + "分,满分");
                            break;
                        }
                    default:
                        System.out.println("抱歉,您所输入的分数不在范围内,信息有误");
                        break;
                }
            }
        }

嵌套的if结构

if(){
    if(){
        
    }
}

switch多选择结构

  • switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
  • switch语句中的变量类型可以是:
    • byte,short,int,char
    • switch支持字符串String类型
    • 同时case标签必须为字符串常量或字面量
public class Demo_switch {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");

        int grade = scanner.nextInt();
        switch (grade){
            case 1:
                System.out.println("棒");
                break;
            case 2:
                System.out.println("很棒");
                break;
            case 3:
                System.out.println("超级棒");

                break;

循环结构

  • while结构

    while循环是最简单的循环

    while(布尔表达式){

    //循环体

    }

    • 只要布尔表达式为true,循环就会一直执行下去

    • 我们大部分让循环停下来的方式,就是让表达式失效的方式来结束循环

    • 很少的情况需要一直执行下去,比如服务器的请求相应监听

    package com.chen.base.choose;
    
    public class Demo_while {
        public static void main(String[] args) {
            //计算1+2+……+100
            int i=0;
            int sum=0;
            while(i<100){
                ++i;
                sum=i+sum;
    
            }
            System.out.println(sum);
        }
    }
    
    package com.chen.base.choose;
    //遍历从1-10
    public class Demo_while2 {
        public static void main(String[] args) {
            int i=0;
            while(i<10){
                ++i;
                System.out.println(i);
            }
    
        }
    }
    
    package com.chen.base.choose;
    
    public class Demo_while3 {
        public static void main(String[] args) {
            //死循环
            while(true){
                //等待客户端链接
                //定时检查
                //监听
            }
        }
    }
    
    public class Dome_while4 {
        public static void main(String[] args) {
            //输出1-1000之间能被5整除的数,且每行输出3个
            int i=0;
            int count=0;
            while(i<1000){
                ++i;
                count++;
                if(i%5==0){
                    System.out.print(i+" ");
                    if(count%3==0){
                        System.out.println(" ");
                    }
                }
    
            }
    
        }
    }
    
    
  • do…while结构

    do{

    //循环体

    }while(布尔表达式);

    • while 和 do-while 的区别:
      • while先判断后执行。do _while是先执行后判断
      • do…while总是保证循环体会至少执行一次,这是他们的主要差别
    package com.chen.base.choose;
    
    public class Dome_do_while {
        public static void main(String[] args) {
            int i=0;
            int sum=0;
            do{
                sum=sum+i;
                ++i;
            }while(i<=100);
            System.out.println(sum);
        }
    }
    
    
  • for结构

    for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构

    for循环执行的次数是在执行前就确定的

    for(初始化;布尔表达式;更新){

    //循环体

    }

public class Doemo_for1 {
    public static void main(String[] args) {
        int sum1=0;
        int sum2=0;
//1-100 奇数和 && 偶数和
        for(int i=0;i<=100;++i){
            if(i%2==0){
                sum1=sum1+i;
            }else{
                sum2=sum2+i;
            }

        }

        System.out.println("偶数和为:"+sum1);
        System.out.println("奇数和为:"+sum2);

    }
}

package com.chen.base.choose;
//1-1000内能被5整除且输出的值每行3个
public class Doemo_for2 {
    public static void main(String[] args) {
        int count=0;
        for(int i=1;i<=1000;++i){
            if(i%5==0){
                count++;
                System.out.print(i+" ");
                if (count%3==0){
                    System.out.println(" ");
                }
            }

        }
    }
}
public class Dome_for_99 {
    public static void main(String[] args) {
        for(int i=1;i<=9;++i){

           //99乘法表
            for(int j=1;j<=i;++j){
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println(" ");//输出完一行就换下一行
        }
    }
}

增强for循环

Java增强for循环的语法格式:

for(声明语句:表达式){

//代码句子

}

  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此同时数组元素的值相等

  • 表达式:表达式时要访问的数组名,或者是返回值为数组的方法

package com.chen.base.choose;

public class Demo_forqing {
    public static void main(String[] args) {
        int []number={1,2,3,4,5,6,7,8,8,9}; //增强for循环,数组的定义
        for(int x:number){//效果等同于for(int i=0;i<10;++i)
            System.out.println(number[x]);
        }
    }
}

java数组定义

数组类型[] 数组名 = new 数组类型[数组长度];
数组类型[] 数组名 = new 数组类型[]{数组元素0,数组元素1,…};
数组类型[] 数组名 = {数组元素0,数组元素1,…};

break continue

  • break在任何循环语句的主体部分,军可用break控制循环的流程。break用与强制退出循环,不执行循环中剩余的语句。
  • continue 语句用在循环语句中,用于终止某次循环过程,及跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Effective Java第三版》是由Joshua Bloch所著的一本Java编程指南。这本书是基于第二版的更新版本,目的是给Java程序员提供一些最佳实践和经验,以编写高效、可维护和可靠的Java代码。 这本书共分为15个章节,每个章节都讲解了一个与Java开发有关的重要主题。比如,章节一讲述了使用静态工厂方法代替构造器的优点,章节二则介绍了如何用Builder模式来构建复杂的对象。此外,书中还提及了Java对象的等价性、覆盖equals方法和hashCode方法、避免创建不必要的对象、使用泛型、枚举、lambda表达式等等。 《Effective Java第三版》通过具体的代码示例和清晰的解释来说明每个主题的关键概念,使读者能够更好地理解和应用。此外,书中还提供了一些实用的技巧和技术,例如避免使用原始类型、尽量使用接口而非类来定义类型等。 总的来说,这本书提供了很多实用的建议和技巧,可以帮助Java开发者写出高质量的代码。无论是初者还是有经验的开发者,都可以从中受益匪浅。无论你是打算从头开始Java编程,还是已经有一定经验的开发者,这本书都是值得推荐的读物。 ### 回答2: 《Effective Java 第三版》是由Joshua Bloch 所著的一本Java编程指南,是Java程序员必读的经典之作。该书共包含90个条目,涵盖了各种Java编程的最佳实践和常见问题的解决方法。 本书分为多个部分,每个部分都侧重于一个特定的主题。作者探讨了Java编程中的各种问题和挑战,并提供了解决方案和建议。这些建议包括如何选择和使用合适的数据结构和算法,如何设计高效的类和接口,如何处理异常和错误,以及如何编写可读性强的代码等等。 《Effective Java 第三版》还关注了Java编程中的性能优化和安全性问题。作者强调了遵循Java语言规范、使用标准库、防范常见安全漏洞等重要原则。此外,本书还介绍了Java 8及其后续版本的新特性和用法,如Lambda表达式、流式编程和Optional类等。 这本书的特点之一是每个条目都独立于其他条目,可以单独阅读和理解。每个条目开头都有一个简洁的总结,让读者能够快速掌握主要观点。此外,书中还有大量的示例代码和解释,帮助读者更好地理解和运用所知识。 总的来说,《Effective Java 第三版》是一本非常实用和全面的Java编程指南。它适用于各个层次的Java程序员,无论是初者还是有经验的开发人员,都可以从中获得宝贵的经验和知识。无论是编写高质量的代码、优化性能还是确保安全性,这本书都是一本不可或缺的参考书籍。 ### 回答3: 《Effective Java 第3版(中文版)》是由 Joshua Bloch 所著的一本关于使用 Java 编程语言的指南书。该书是对 Java 语言的最佳实践的详尽描述,为中高级 Java 开发人员提供了许多实用的建议和技巧。 该书的主要内容包括Java 语言的优雅编程风格、类和接口的设计、Lambda 表达式和流的使用、泛型、异常和并发编程等方面的最佳实践。 在《Effective Java 第3版(中文版)》中,许多传统的 Java 开发中的陷阱、常见错误和不良习惯都得到了深入的剖析和解答。它不仅提供了可供开发人员参考的示例代码,还解释了为什么某种方式是有问题的,以及如何更好地进行改进。 该书的深度和广度非常适合正在努力提高 Java 编程技能的开发人员。它涵盖了多个关键领域,为读者提供了在实际项目中解决常见问题的方法和思路。 此外,《Effective Java 第3版(中文版)》还介绍了最新版本的一些特性和改进。例如,它详细说明了如何正确地使用 Java 8 中新增的 Lambda 表达式和流,以及如何充分利用 Java 9、10 和 11 中的新功能。 总之,这本书是 Java 开发人员必备的指南之一。通过深入理解和应用书中的实践建议,读者可以更加高效地编写、优化和维护 Java 代码。无论是想提升职业技能还是在项目中减少错误和问题,这本《Effective Java 第3版(中文版)》都是一本非常有帮助的参考书。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值