首页 > 其他分享 >输入,选择,while循环

输入,选择,while循环

时间:2023-06-22 21:55:18浏览次数:25  
标签:语句 scanner System else while 循环 println 输入 out

输入,选择,while循环

用户交互Scanner

  • 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是 Java5的新特征,我们可以通过Scanner类来获取用户的输入。

  • 基本语法:
    scanner s = new Scanner(System.in);

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

import java.util.Scanner;

public class Day622 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);//创建一个扫描器对象,用于接收键盘数据
        System.out.println("使用next方式接收:");
        //判断用户有没有输入字符串
        if(scanner.hasNext()){
            String str= scanner.next();//使用next接收
            System.out.println("输出的内容为:"+str);
        }
         //凡是属于IO流的类,如果不关闭会一直占用资源,要及时关闭
        scanner.close();
    }
}

next():

1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。

4、next()不能得到带有空格的字符串。

nextLine():

1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。

2、可以获得空白。


输入整数与小数

import java.util.Scanner;

public class Day62203 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);//扫描输入放置于scanner中
        int i=0;
        float f=0.0f;
        System.out.println("请输入整数:");//别忘
        if(scanner.hasNextInt()){
            i = scanner.nextInt();//前面已经创建i,所以这里的i前面不需要加int
            System.out.println("整数数据:"+i);
        }
        else{
            System.out.println("你输入的不是整数!");
        }
        System.out.println("请输入小数:");
        if(scanner.hasNextFloat()){
             f = scanner.nextFloat();
            System.out.println("整数数据:"+f);
        }
        else{
            System.out.println("你输入的不是小数!");
        }
        scanner.close();//在创建scanner之后先写,不然容易忘
    }
}

通过循环判断是否还有输入,并在里面对每一次进行求和和统计

public class Day62204 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入");
        //多个数字求和,非数字结束
        double sum=0;
        int m=0;
        //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
        while (scanner.hasNextDouble()){
            double x = scanner.nextDouble();
            m=m+1;
            sum=sum+x;
            System.out.println("你输入了第"+m+"个数据,当前和为"+sum);
        }
        System.out.println("m的个数为"+m);
        System.out.println(m+"个数的和为"+sum);//变量+字符+变量
        System.out.println(m+"个数的平均值为"+(sum/m));
        scanner.close();
    }
}


顺序结构

  • JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
  • 顺序结构是最简单的算法结构。
  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

选择结构

if单选择结构

我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示

  • 语法:
    if(布尔表达式){
    /如果布尔表达式为true将执行的语句}

if双选择结构

  • 语法:
    if(布尔表达式){
    //如果布尔表达式的值为true}else{
    //如果布尔表达式的值为false}
public class Day62200 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入");
        String s = scanner.nextLine();
        //判断字符串是否相等
        if (s.equals("Hello")){
            System.out.println(s);
        }//else  //有else则与if2选1,没有则必定输出end
            System.out.println("end");
        scanner.close();
    }
}

if多选择结构

  • 语法:
    if(布尔表达式1){
    //如果布尔表达式1的值为true执行代码

    }else if(布尔表达式2){
    //如果布尔表达式2的值为true执行代码

    }else if(布尔表达式 3){
    1/如果布尔表达式3的值为true执行代码

    }else {
    //如果以上布尔表达式都不为true执行代码)

    }

  • if语句至多有1 个else语句,else 语句在所有的else if 语句之后。

  • if语句可以有若干个 else if语句,它们必须在else语句之前。

  • 一旦其中一个else if 语句检测为true,其他的else if以及else 语句都将跳过执行。

public class Day62201 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩:");
        int score = scanner.nextInt();
        if(score==100){
            System.out.println("恭喜满分");
        } else if (score>=80&&score<100) {
            System.out.println("优秀");
        }else if (score>=60&&score<80) {
            System.out.println("良好");
        }else if (score>=0&&score<60) {
            System.out.println("不及格");
        } else
            System.out.println("输入错误");
        scanner.close();
    }
}

嵌套的if结构

使用嵌套的if...else语句是合法的。也就是说你可以在另一个if或者else if 语句中使用if 或者else if 语句。你可以像if语句一样嵌套else if...else。

  • 语法:
    if(布尔表达式1){
    //如果布尔表达式1的值为true执行代码

    ​ if(布尔表达式2){
    ​ //如果布尔表达式2的值为true执行代码}
    ​ }

    }


switch多选择结构

  • 多选择结构还有一个实现方式就是switch case语句。
  • switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
  • switch语句中的变量类型可以是:
    • byte、short、int或者char。
    • 从Java SE 7开始
    • switch支持字符串 String类型了
    • 同时case标签必须为字符串常量或字面量。
switch( expression){
case value :
//语句
break;//可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}

输入char,通过switch选择

public class Day62203 {
    public static void main(String[] args) {

        Scanner grade = new Scanner(System.in);
        System.out.println("请输入成绩:");

        char g =grade.next().charAt(0) ;//输入char值,其中0代表grade的第一个字符
        switch (g){
            case'A':
                System.out.println("优秀");
                break;
            case'B':
                System.out.println("良好"); break;
            case'C':
                System.out.println("菜"); break;
            default:
                System.out.println("未知量"); break;
        }
        grade.close();
    }
}

switch中string型

public class Day62204 {
    public static void main(String[] args) {
        String name="1";
        switch(name){
            case "青":
                System.out.println("青");
            break;
            case"狂":
                System.out.println("狂");
            break;
            default:
                System.out.println("错误");
        }
    }
}

switch中int型

public static void main(String[] args) {
        int name=1;
        switch(name){
            case 1:
                System.out.println("青");
                break;
            case 2:
                System.out.println("狂");
                break;
            default:
                System.out.println("错误");
        }
    }

循环结构

while循环

  • while是最基本的循环,它的结构为:

    • while(布尔表达式) {
      //循环内容
      }
  • 只要布尔表达式为true,循环就会一直执行下去。

  • 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。

  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等。

  • 循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃!

    计算1+2+3+...+100

public class Day622While1 {
    public static void main(String[] args) {
        //计算1+2+3+...+100
        int i=0;
        int sum=0;
        while(i<100){
            i++;
            sum=sum+i;
        }
        System.out.println(sum);
    }
}

do...while循环

  • 对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条也至少执行一次。
  • do...while循环和while循环相似,不同的是,do...while循环至少会执行一次。
    • do {
      //代码语句
      }while(布尔表达式);

While和do-While的区别:
while先判断后执行。dowhile是先执行后判断!
Do...while总是保证循环体会被至少执行一次!这是他们的主要差别。

public class Day622DoWhile1 {
    public static void main(String[] args) {
        int a=0;
        while (a<0){
            System.out.println(a);
            a++;
        }//
        System.out.println("------------------");
        do {
            System.out.println(a);
            a++;
        }while (a<0);//0
    }
}

标签:语句,scanner,System,else,while,循环,println,输入,out
From: https://www.cnblogs.com/xin-zhi-suo-xiang/p/17498417.html

相关文章

  • 人工智能在智能车辆中的语音识别技术:如何识别不同的语音输入
    目录人工智能在智能车辆中的语音识别技术是当前人工智能领域的热点之一,其应用范围广泛,可以用于多种场景下的智能驾驶,如自动驾驶辅助、自动泊车、智能安防等。本文将从语音识别技术的原理、相关技术比较以及实现步骤和优化改进等方面进行深入探讨,旨在为读者提供全面、系统、专业的......
  • 数组越界导致的死循环,以及对存储方式的思考
    一、bug有如下代码:intmain(){ inti=0; intarr[10]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<=12;i++){ printf("hehe\n"); arr[i]=0; } return0;}按正常思路,该代码会打印13个hehe,并把arr数组里的10个元素改为0,但为什么计算机会死循环打印无数个hehe?二、原......
  • Android,两个互相影响的EditText如何避免死循环
    简单来说,是一个类似如下的需求:两个EditText,假设名字分别是et1和et2;et1的值*一个数字,假设是4500=et2的值;当et1的值发生变化时,et2的值也发生变化,et2的值发生变化时,et1的值也发生变化,用过用简单的 TextWatcher就会发生死循环,如何避免,下面是这个例子代码的最核心部分,简单来说就......
  • 关于使用rsync命令小技巧-交互式输入密码后-再置于后台运行的方法
    在linux系统中,rsync命令常用于在两台linux主机之间同步数据rsync关于认证可以同ssh的用户密码认证一样,我们执行rsync命令后,会要求输入认证的密码,但很多时候数据特别大时,我们是希望执行过程放在后台运行笔者尝试,在执行rsync命令,如 rsync-az/aa/bb/cc/--exclude"dir01/"--ex......
  • permission denied while trying to connect to the Docker daemon socket at unix://
     001、问题[liujiaxin01@PC1~]$dockersearchomicsclasspermissiondeniedwhiletryingtoconnecttotheDockerdaemonsocketatunix:///var/run/docker.sock:Get"http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/search?term=omicsclass":dialunix......
  • RNN预测模型做多输入单输出预测模型,直接替换数据就可以用。
    RNN预测模型做多输入单输出预测模型,直接替换数据就可以用。程序语言是matlab,需求最低版本为2021及以上。程序可以出真实值和预测值对比图,线性拟合图,可打印多种评价指标。PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据......
  • 循环神经网络 - RNN
    在上一篇文章中,介绍了卷积神经网络(CNN),CNN在图像识别中有着强大、广泛的应用,但有一些场景用CNN却无法得到有效地解决,例如:语音识别,要按顺序处理每一帧的声音信息,有些结果需要根据上下文进行识别;自然语言处理,要依次读取各个单词,识别某段文字的语义;这些场景都有一个特点,就是都与时间序......
  • matlab的基于遗传算法优化bp神经网络多输入多输出预测模型
    matlab的基于遗传算法优化bp神经网络多输入多输出预测模型,有代码和EXCEL数据参考,精度还可以,直接运行即可,换数据OK。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/632809753171.html这个程序是一个基于遗传算法优化的BP神经网络多输入两输出模型。下面我将对程序进行详细分析......
  • C# 接口获取所有节假日并存入库(批量循环对象操作)
    //每年的1月1号自动更新节假日表varallHolidayStr=BaseHelper.Get_HttpRequest("https://api.jiejiariapi.com/v1/holidays/"+DateTime.Now.ToString("yyyy"));if(allHolidayStr.IsNotNullOrEmpty()){......
  • shared_ptr的循环引用
    classController{public:Controller()=default;~Controller(){std::cout<<"in~Controller"<<std::endl;}classSubController{public:SubController()=default;~SubController(){std::cout&......