Java流程控制基础

Java流程控制基础

用户交互scanner

java.util.Scanner是java5的新特征,我们可以通过scanner类获取用户的输入。

基本语法

Scanner scanner = new Scanner(System.in);//输入new Scanner(System.in)+Alt+回车输入
new代表创建一个新对象
    System.in代表用户输入

使用scanner输入字符串

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

用代码的方式输入字符串

Scanner scanner = new Scanner(System.in);
        String str=scanner.next();//创建一个字符串类型的变量,名字为str,用next的方法从键盘接收
        System.out.println("输入的内容为:"+str);

这样我们输入一个字符串,屏幕上就会打印对应的字符串

在这里插入图片描述

但是当我们输入的字符串后面有空格时,屏幕上只会打印空格前的内容

在这里插入图片描述

当我们想将空格前后的内容全部打印出来时可以用nextline()方法获取输入的字符串

代码如下:

 Scanner scanner = new Scanner(System.in);
        String str=scanner.nextLine();
        System.out.println("输入的内容为:"+str);

在这里插入图片描述

在调用Scanner类是,最好在结束加上scanner.close();,这样可以减少不必要浪费的资源

next()的特点

1.一定要到有效字符后才可以结束输入

2.对输入有效字符前遇到的空白,next()方法会将其过滤掉

3.只有输入有效字符才将其后面输入的空白作为分隔符或者结束符

4.next()方法不能得到带有空格的字符

nextLine()的特点

1.以Enter为结束符,也就是nextLine()方法返回的是输入回车前的字符

2.可以获得空白

使用scanner输入其他的基本类型

使用scanner接收整数数据

    Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字:");
      int i = 0;
      float f = 0.0f;
      if (scanner.hasNextInt())//判断输入的数字是不是整数,如果是整数就输出这个数
      {
          i=scanner.nextInt();
          System.out.println("您输入的是整数,这个整数为:"+i);
      }
      else {
          System.out.println("您输入的不是整数");
      }

使用scanner接收小数数据

 float f = 0.0f;
      
      if (scanner.hasNextFloat())//判断输入的数字是不是小数,如果是小数就输出这个数
      {
         f=scanner.nextFloat();
          System.out.println("您输入的是小数,这个小数为"+f);
      }
      else {
          System.out.println("您输入的不是小数");
      }
        scanner.close();

练习:输入多个数字计算这几个数字的和,平均值

 Scanner scanner = new Scanner(System.in);

      int i = 0;//计算输入了几个数字
        double d = 0.0;//将输入的和的值记录到d中
        while (scanner.hasNextDouble())//判断输入的数是不是数字
        {
                   double x=scanner.nextDouble();
                   i+=1;//如果输入的是数字就自增1
                   d+=x;//将输入的值记录到d中,并且进行求和
        }
        System.out.println("和为:"+d);
        System.out.println("平均值为"+(d/i));
scanner.close();

顺序结构

顺序结构就是语句和语句之间,自上而下执行

System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(4);

在这里插入图片描述

由此可见,程序就是从上而下依次打印的

if选择结构

if单选择结构

语法

if(布尔表达式)
{
    如果布尔表达式是ture就执行的语句,里面是一个语句块
}

例句:


int i = 10;
         int j = 20;
         if (i<j)//当i<k时条件为真
         {
             System.out.println(j);//当条件为真时打印j的值
         }

if双选择结构

语法

if(布尔表达式)
{
    如果布尔表达式是ture就执行的语句
}
else
{
     如果布尔表达式是flase就执行的语句
}

例句

int i = 10;
         int j = 20;
         if (i<j)//当i<k时条件为真
         {
             System.out.println(j);//当条件为真时打印j的值
         }
         else//当if的条件为假
         {
              System.out.println(i);//当条件为假时打印i
         }
     

if多选择结构

if(布尔表达式1)
{
    布尔表达式1为真时,执行的语句
}
else if(布尔表达式2)
{
     布尔表达式2为真时,执行的语句
}
else if(布尔表达式)
{
     布尔表达式3为真时,执行的语句
}
else
{
    当上面的表达式为假时,执行的语句
}

练习:当一个学生的成绩在90100分时,输出A,当一个学生的成绩在8090分时,输出B,当一个学生的成绩在7080分时,输出C,当一个学生的成绩在6070分时,输出D,当一个学生的成绩在以下60分时,输出E,否则提醒输入的值不正确

int i = 0;
        Scanner scanner = new Scanner(System.in);
        i=scanner.nextInt();
        if(i>90&&i<=100)
        {
            System.out.println("A");
        } else if (i>80&&i<=90) {
            System.out.println("B");
        } else if (i>70&&i<=80) {
            System.out.println("C");
        } else if (i>60&&i<=70) {
            System.out.println("D");
        } else if (i < 60) {
            System.out.println("E");
        }
        else {
            System.out.println("请输入有效成绩");
        }
        scanner.close();

if的嵌套

语法:

if(布尔表达式1)
        {
            //布尔表达式1为真执行代码
            if(布尔表达式2)
            {
                //布尔表达式2为真执行代码
            }
        }

练习:输入一个数,判断是否是闰年

判断闰年的条件:1.能被4整除,并且不能被400整除

​ 2.能被400整除

     int i = 0;
        Scanner scanner = new Scanner(System.in);
        i=scanner.nextInt();
        if(i%4==0)//当能被4整除时执行代码块
        {
            if(i%400!=0)//当不能被400整除时执行代码块
            {
                System.out.println(i+"是闰年");
            }
        } else if (i % 400 == 0)//当能被400整除时执行代码块
        {
            System.out.println(i+"是闰年");
        }
        else //当以上条件都不能成立时执行的代码块
       {
            System.out.println("不是闰年");
        }
        scanner.close();

switch选择结构

switch一般与case,break绑定,作用是判断一个变量与一系列值中某个值是否相等,每个值称为一个分支

switch支持的变量类型

byte,int,short,char,String

case标签必须为字符串常量或字面量

语法:

switch(表达式)
{
    case value:
            //语句
            break;//看情况选择加不加
          case value:
            //语句
            break;//看情况选择加不加
    default://看情况选择加不加
        //语句
}

练习:输入一个数字输出与数字对应的星期数,输入1打印星期一

 int i = 0;
                Scanner scanner = new Scanner(System.in);
                i=scanner.nextInt();
               switch (i)
               {
                   case 1:
                       System.out.println("星期一");
                       break;
                   case 2:
                       System.out.println("星期二");
                       break;
                   case 3:
                       System.out.println("星期三");
                       break;
                   case 4:
                       System.out.println("星期四");
                       break;
                   case 5:
                       System.out.println("星期五");
                       break;
                   case 6:
                       System.out.println("星期六");
                       break;
                   case 7:
                       System.out.println("星期日");
                       break;
                   default:
                       System.out.println("输入有效日期");
               }
                scanner.close();

break在switch中的作用

break在switch中的作用是:当你输入的数与case匹配成功时,就只执行这个语句。如果没有break,会一直向下执行

 int i = 0;
 Scanner scanner = new Scanner(System.in);
 i=scanner.nextInt();
switch (i)
{
    case 1:
        System.out.println("星期一");

    case 2:
        System.out.println("星期二");

    case 3:
        System.out.println("星期三");

    case 4:
        System.out.println("星期四");

    case 5:
        System.out.println("星期五");

    case 6:
        System.out.println("星期六");

    case 7:
        System.out.println("星期日");

    default:
        System.out.println("输入有效日期");
}

 scanner.close();

比如输入4时

在这里插入图片描述

while循环结构

while (布尔表达式)
{
    //循环体
}

只要布尔表达式为真,循环就一直进行

一般情况下,循环是要停止的,所以要让布尔表达式失效的方式来结束循环

如果布尔表达式一直为真,程序一直循环,会造成死循环

练习:输出1~100

int a = 1;//因为是1~100所以初始化为1
while (a<=100)//当a大于100是就不循环了
{
    System.out.print(a+" ");//每循环一次就打印一个数
    a++;//打印完后自增1
}

练习:计算1~100的和

int i = 0;
int sum = 0;
while (i<=100)
{
    sum+=i;//将i每次得到的值累加到sum
    i++;
}
 System.out.println(sum);

do…while循环结构

对于while如果一上来条件就不成立那么就一次都不循环,但是,do…while循环计算条件一次不成立它最起码会执行一次循环

while和do…while的区别

while先判断后执行,do…while先执行后判断

do…while语句的语法

 do {
       //代码语句
   }while(布尔表达式);
int i = 0;
while (i<0)
{
    System.out.println(i);
    i++;
}
 System.out.println("==============");
do {
    System.out.println(i);
    i++;
}while (i<0);

上面的while循环,因为i不符合i<0的条件,所以不会执行循环语句,do…while语句因为是先打印再判断的所以会输出一个0

for循环结构

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

for循环的语法格式

for(初始化;判断部分;调整部分)
{
    //代码语句
}

for语句执行顺序是:先初始化,然后进行判断部分,如果判断部分为真,就进入调整部分,然后再进入判断部分,如果为假结束循环。

用for语句打印0~100的偶数的和,和奇数的和

int sum=0;//存放偶数的和
int num=0;//存放奇数的和	
        for (int i = 0; i <= 100; i++) {
            if(i%2==0)
            {

                sum+=i;
            }
            if (i%2!=0)
            {
                num+=i;
            }
        }
        System.out.println(sum);
        System.out.println(num);

判断一个数是不是素数

素数的条件:只能被2和它本身整除

Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int flag=1;
for (int i=2;i<=n;i++)//打印二到它本身的数
{
    if (n%i==0)//用n/i如果能被整除就不是素数,否则就是素数
    {
        flag=0;
        System.out.println("你输入的数"+n+"不是素数");
        break;
    }
    if(flag==1)
    {
        System.out.println("你输入的数"+n+"是素数");
    }
}
    {
                num+=i;
            }
        }
        System.out.println(sum);
        System.out.println(num);

判断一个数是不是素数

素数的条件:只能被2和它本身整除

Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int flag=1;
for (int i=2;i<=n;i++)//打印二到它本身的数
{
    if (n%i==0)//用n/i如果能被整除就不是素数,否则就是素数
    {
        flag=0;
        System.out.println("你输入的数"+n+"不是素数");
        break;
    }
    if(flag==1)
    {
        System.out.println("你输入的数"+n+"是素数");
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值