Java学习之流程控制

流程控制学习

用户交互scanner

Scanner类来获取用户的输入

1.基本语法:

Scanner s=new Scanner(System.in);//创建一个Scanner对象,用于接收键盘数据

01 先用scanner.hasNext()判断用户是否输入字符串,如Hello

再用scnaner.next 接收字符串,输出接收的数据为:Hello

package com.KuangStudy.Scanner;

import java.util.Scanner;//自动导入

public class Demo01 {
public static void main(String[] args) {
   
   Scanner scanner = new Scanner(System.in);
   System.out.println("使用next方式接收数据:");

   //用hasnext()判断用户是否输入字符串
   if (scanner.hasNext()){
       //使用next接收
       String str=scanner.next();
       System.out.println("输出内容为"+str);
  }
   //IO流的类要及时关闭,否则会持续占用资源,IO流指输入输出流
   scanner.close();
}
}

02 先用scanner.hasNextLine()判断用户是否输入字符串,如Hello World

再用scnaner.nextLine 接收字符串,输出接收的字符串为:Hello World

public static void main(String[] args) {
   Scanner scanner = new Scanner(System.in);
   System.out.println("使用nextline接收数据:");
   if(scanner.hasNextLine()){
       String str=scanner.nextLine();
       System.out.println("输出内容:"+str);
  }
   //IO流的类要及时关闭,否则会持续占用资源,IO流指输入输出流
   scanner.close();
}

03 注意

a.Scanner对象:next()不能得到带有空格的字符串

nextLine()以enter为结束符,即nextLine方法返回的是输 入回车之前的所有字符

b.IO流的类要及时关闭,否则会持续占用资源,IO流指输入输出流

scanner.close();

04 简洁写法

public static void main(String[] args) {
   Scanner scanner = new Scanner(System.in);
   System.out.println("请输入内容:");
   String str=scanner.nextLine();
   System.out.println("您输入的内容为:"+str);
   scanner.close();
}

2.Scanner接收数字

nextInt(); nextFloat(); ...

public static void main(String[] args) {
   //new一个scanner对象,接收键盘输入数据
   Scanner scanner = new Scanner(System.in);
   float f=0.0f;
   int i=0;

   System.out.println("请输入一个整数:");
   if (scanner.hasNextInt()) {//判断用户是否输入整数
       i=scanner.nextInt();//接收输入数据
       System.out.println("您输入的整数是:"+i);
  } else {
       System.out.println("您输入的不是整数");
  }

   System.out.println("请输入一个小数:");
   if (scanner.hasNextFloat()) {//判断用户是否输入小数,此处输入1,得到1.0;输入2,得到2.0 ...else后的内容暂时无法实现
       f=scanner.nextFloat();//接收输入数据
       System.out.println("您输入的小数是:"+f);
  } else {
       System.out.println("您输入的不是小数");
  }
   scanner.close();
}

3.题:我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入,并输出结果

public static void main(String[] args) {
   Scanner scanner = new Scanner(System.in);
   double i=0.0;
   int m=0;
   double sum=0.0;
   System.out.println("请输入:");
   //通过循环判断是否还有输入,使用while可以输入多个数字
   while (scanner.hasNextDouble()){
       //获取接收的数据应新定义一个对象来装
       i = scanner.nextDouble();
       m=m+1;//m++
       sum=sum+i;
       System.out.println("第"+m+"个数"+"当前sum="+sum);
  }
   System.out.println(m+"个数的sum="+sum);
   scanner.close();
}

顺序结构

Java最基本的结构,除非特别指明,否则按顺序一步一步执行

If选择结构

01单选择结构

public static void main(String[] args) {
   Scanner scanner = new Scanner(System.in);
   System.out.println("请输入:");
   String s=scanner.nextLine();
   //if单选择结构,判断s ?= Hello
   //if(bool表达式){结果为true}
   if (s.equals("Hello")){
       System.out.println(s);
  }
   System.out.println("End");
}

02双选择结构

public static void main(String[] args) {
   Scanner scanner = new Scanner(System.in);
   float score=scanner.nextFloat();
   if(score>=60){
       System.out.println("及格");
  }
   else {
       System.out.println("不及格");
  }
}

03多选择结构

public static void main(String[] args) {
   Scanner scanner = new Scanner(System.in);
   System.out.println("请输入分数:");
   float score=scanner.nextFloat();
   if (score>=90 && score<=100){
       System.out.println("A");
  }else if(score>=80 && score<90){
       System.out.println("B");
  }else if(score>=70 && score<80){
       System.out.println("c");
  }else if(score>=60 && score<70){
       System.out.println("D");
  }else if(score>=0 && score<60){
       System.out.println("E");
  }else
  {
       System.out.println("输入成绩不合法");
  }
}

04嵌套结构

if(bool表达式1){
   //如果bool表达式1为true,则执行代码
   if(bool表达式2){
      // 如果bool表达式2为true,则执行代码
  }
}

Switch选择结构

格式:

switch(expression){
   case value:
       //语句
       break;
   case value:
       //语句
       break;
   default:
       //语句
}

01语句中的变量类型可以是byte、short、int或char

public static void main(String[] args) {
   char grade='A';
   //注意switch(这里加的内容)
   switch (grade){
       case 'A':
           System.out.println('A');
           break;
           case 'B':
           System.out.println('B');
           break;
           case 'C':
           System.out.println('C');
           break;
           case 'D':
           System.out.println('D');
           break;
           case 'E':
           System.out.println('E');
           break;
  }
}

02语句中的变量类型可以是String

public static void main(String[] args) {
   String name="S";
   switch (name){
       case "Xiuga":
           System.out.println(name);
           break;
       case "Sugar":
           System.out.println("Sugar");
           break;
       default:
           System.out.println("有没有搞错");
  }
}

03反编译 java---class(字节码文件)---反编译

File--Project Structure--找到class文件所在目录

在IDEA相应目录下右键--open in--打开对应class文件即可查看源码

While循环

格式:

while(bool表达式){
   循环内容
}

01死循环,会造成程序卡死崩溃,少数情况需要循环一直执行

while(true){//死循环,或bool表达式即循环条件一直为true
   
}

02 1+2+3+...+100=?

public static void main(String[] args) {
   int i=0;
   int sum=0;
   while (i<=100){
       sum=sum+i;
       i++;
  }
   System.out.println("1+2+...+100="+sum);
   //输出1 2 ...100
   /*while (i<100){
       i++;
       System.out.println(i);
   }*/
}

Dowhile循环

格式:

do{
   //循环语句
}while(bool表达式);

01DoWhile计算1+...+100=

public static void main(String[] args) {
   int i=0;
   int sum=0;
   do {
       sum=sum+i;
       i++;
  }while (i<=100);
       System.out.println(sum);
}

02DoWhile While的区别

  • whlie先判断后执行,do...while先执行后判断

  • do...while总是保证循环体至少会被执行一次

public static void main(String[] args) {
   int a=0;
   while (a<0) {
       a++;
       System.out.println(a);//无值输出
  }
   System.out.println("================");
   do {
       a++;
       System.out.println(a);//a==1
  }while (a<0);
   
}//证明了while和do...while的区别

For循环

虽然所有循环结构都可以用while或do...while表示,但是for循环使一些循环结构变得更简单

格式:

for(初始化;bool表达式;更新){
   //代码语句
}

01while循环与for循环的比较

public static void main(String[] args) {
   int a=0;//初始化
   while (a<100){//bool表达式
       a++;//迭代
       System.out.println(a);
  }
   System.out.println("while循环结束");
   
   //初始化;bool表达式;迭代
   for(int i=1;i<=100;i++){
       System.out.println(i);
  }
   System.out.println("for循环结束");
}
//死循环
for(;;;){
   
}

02计算0-100之间奇数和偶数的和

public static void main(String[] args) {
   //计算0-100之间奇数和偶数的和
   int oddsum=0;//存放奇数和
   int evensum=0;//存放偶数和
   for(int i=0;i<=100;i++){
       if(i%2==0){//i为偶数时
           oddsum +=i;
      }else {//i为奇数时
           evensum +=i;
      }
  }
   System.out.println("奇数的和:"+oddsum);
   System.out.println("偶数的和:"+evensum);
}

03用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个

public static void main(String[] args) {
   //用while循环输出1-1000之间能被5整除的数,并且每行输出3个
   int i=0;
   while (i<=1000){
       if (i%5==0){
           System.out.print(i+"\t");
      }
       if(i%(5*3)==0){
           System.out.println();
      }
       i++;
  }
}
public static void main(String[] args) {
   //用for循环输出1-1000之间能被5整除的数,并且每行输出3个
   for (int i = 0; i <= 1000; i++) {
       if(i%5==0){
           System.out.print(i+"\t");
      }
       if (i%(5*3)==0){
           //System.out.println();
           System.out.print("\n");
      }
      // System.out.println();输出换行
       //System.out.print();输出不换行
  }
}

04打印九九乘法表

public static void main(String[] args) {
   /*思路:
   1.先打印第一列
   2.再把1用for循环包起来
   3.去掉重复项 i<=j
   4.调整样式
   * */
   for (int j = 1; j <= 9; j++) {
       for (int i = 1; i <= j; i++) {
           System.out.print(j+"*"+i+"="+j*i+"\t");
      }
       System.out.println();
  }
}

05增强for循环---主要用于数组或集合

格式:

for(声明语句:表达式){
   //代码语句
}

for循环遍历数组与增强for循环遍历数组

public static void main(String[] args) {
   int[] num={10,20,30,40,50};//定义一个数组
   for (int i=0;i<5;i++){
       System.out.println(num[i]);//取num数组中的第i个数
}
   System.out.println("=============");

   //遍历数组的元素,把num数组的元素赋值给x
   for(int x:num){
       System.out.println(x);
  }
}

break &continue

01break 用于终止任何循环语句的主体部分,跳出循环

public static void main(String[] args) {
   int i=0;
   while (i<100){
       i++;
       System.out.println(i);
       if (i==30){
           break;
      }
  }
}

02continue用于终止某次循环过程,跳过循环体中尚未执行的语句,接着进行下一次循环

public static void main(String[] args) {
   int i=0;
   while (i<100){
       i++;
       if (i%10==0){
           System.out.println();
           continue;
      }
       System.out.print(i);
  }
}

03打印三角形

package com.KuangStudy.struct;

public class TestDemo {
/*
@author xiuga
@version 1.8
@since 2021-02-07 22:41
*/
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 j = 1; j <= i; j++) {
           System.out.print("*");
      }
       for (int j = 1; j < i; j++) {//注意此处j<i,没有=
           System.out.print("*");
      }
       System.out.println();
  }
}
}

 

 

 

 

posted @ 2021-02-06 22:46  xiuga  阅读(106)  评论(1)    收藏  举报