Java基础回顾_第二部分_Java流程控制

时间:2021-09-14 12:19:54

Java基础回顾_第二部分

Java流程控制

Scanner对象(扫描器,捕获输入)

import java.util.Scanner;

public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
System.out.println("使用nextLine方式接收:");//以回车和回车为结束符
if (scanner.hasNextLine()){
//使用nextLine方式接收
String str2 = scanner.nextLine();
System.out.println("输出的内容为:"+str2);
} System.out.println("使用next方式接收:");//以空格为结束符
//判断是否还有输入
if (scanner.hasNext()){
//使用next方式接收
String str = scanner.next();
System.out.println("输出的内容为:"+str);
} scanner.close();
}
}

个人总结:

Scanner对象有两个方法next()nextLine()

  1. next()输入是,只要输入了有效字符之后,输入空格就会使后续输入的字符失效,例如输入hello空格world,输出结果就只有hello;且如果一开始就输入空格,next()方法会自动无视,不影响后续输入有效字符。
  2. nextLine()输入是,不用管什么时候输入的空格或字符都有效,输入多少显示多少。只会在按回车键的时候结束输入。

自用练习题:

  • 输入多个数字,求它们的总数与平均数,每输入一个数字就用回车确认一遍,当输入数据不是数字时,结束并输出结果。
import java.util.Scanner;

public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); double sum = 0;//作为求和变的变量
int m = 0;//作为记录输入数字个数的变量 System.out.println("请输入任意个数字,并输入一个非数字的字符来结束输入:");
//while循环语句
while (scanner.hasNextInt()){
double i = scanner.nextInt();//用来记录每次输入的数字
m++;
sum+=i;
}
System.out.println("输入了"+ m + "个数字");
System.out.println("它们的总数为:"+ sum);
System.out.println("它们的平均数为:"+ sum / m); scanner.close();
}
}

顺序结构

  • 顺序结构是Java最简单的算法结构。即代码从上往下,一句一句执行。

  • 选择结构:if语句、switch多选择结构

if语句

  • if单选 结构 只有iif和执行语句

  • if双选 结构 有if和else 两条执行语句

  • if多选 结构 有一个if和多个else if 多条执行语句

  • 嵌套 的if结构

import java.util.Scanner;

public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入任意内容:"); if (scanner.hasNextInt()){
System.out.println("你输入的是整数~");
}
else{
System.out.println("你输入的不是整数");
} String s = scanner.nextLine();
if (s.equals("abc")){
System.out.println("你猜中了!");
}
else {
System.out.println("你猜错了!");
}
scanner.close();
}
}

Java基础回顾_第二部分_Java流程控制

switch多选择结构(匹配机制)

import java.util.Scanner;

public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入任意内容:");
String str = scanner.nextLine();
switch (str){
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;
default:
System.out.println("补考");
}
}
}

Java基础回顾_第二部分_Java流程控制


循环结构

  • while循环---------------------->先判断布尔表达式,后执行代码
  • do...while循环---------------->先执行代码,后判断布尔表达式(执行代码至少执行一次)
  • for循环
  • 增强for循环

while循环

格式:

while(布尔表达式){

//执行的代码;

}

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

Java基础回顾_第二部分_Java流程控制

do...while循环

格式:

do{

//执行的代码;

}while(布尔表达式);

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

Java基础回顾_第二部分_Java流程控制

for循环

格式:

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

//执行代码;

}

public class Demo01 {
public static void main(String[] args) { int i = 1;
for (i = 1;i<10;i++){
System.out.println(i);
}
System.out.println(i);//10----->布尔表达式为假的时候跳过执行代码,还会执行一次 i++;所以最后i变成了10!
}
}

Java基础回顾_第二部分_Java流程控制

练习题:

  1. 分别计算1到100之间奇数的和、偶数的和。
  2. 分别用while和for循环,输出1到1000之间能被5整除的数,并且每行输出三个数。
  3. 打印九九乘法表

  1. 分别计算1到100之间奇数的和、偶数的和。
  public class Demo01 {
public static void main(String[] args) { int i = 1;
int sum1 = 0;//奇数和
int sum2 = 0;//偶数和
for (i = 1;i<=100;i++){
if (i%2==0){
sum1 += i;
}else{
sum2 += i;
}
}
System.out.println("最后i的值为:"+i);
System.out.println("1到100,奇数和为:"+sum1);
System.out.println("1到100,偶数和为:"+sum2);
}
}

Java基础回顾_第二部分_Java流程控制

  1. 分别用while和for循环,输出1到1000之间能被5整除的数,并且每行输出三个数。

    while方式
public class Demo01 {
public static void main(String[] args) { int i = 1;
int j = 0;
while (i<=1000){
if(i%5 == 0){
System.out.print(i+"\t");
j++;
if (j%3 == 0){
System.out.print("\n");
}
}
i++; }
}
}

Java基础回顾_第二部分_Java流程控制

for方式

public class Demo01 {
public static void main(String[] args) { int j = 0;
for(int i = 1;i<=1000;i++){
if(i%5 == 0){
System.out.print(i+"\t");
j++;
if (j%3 == 0){
System.out.print("\n");
}
} }
}
}

Java基础回顾_第二部分_Java流程控制

  1. 打印九九乘法表

个人思路:先打印出所有相乘的式子,然后观察99乘法表规律进行如下操作。

public class Demo01 {
public static void main(String[] args) { for(int i = 1;i<=9;i++){
for (int j = 1;j<=9;j++){
//去掉乘号左边数字大于右边数字的式子,用空格代替显示-------->第三步
if (j>i){
System.out.print("\t");
}else {
System.out.print(j+"*"+i+"="+i*j+"\t");//----->第一步打印出所有式子
}
//j是乘号右边的数,每次乘到9的时候换行------->第二步
if(j==9){
System.out.print("\n");
}
}
}
}
}

Java基础回顾_第二部分_Java流程控制

改进后的思路:

public class Demo01 {
public static void main(String[] args) {
for(int i=1;i<=9;i++){
//用j<=i控制每一行输出的式子个数(妙啊!!!!!!!!!)
//通过循环累加,当j>i的时候跳出循环,从而不会打印 乘号左边的数字大于乘号右边的数字 的等式,妙啊!
for (int j=1;j<=i;j++) {
System.out.print(j + "*" + i + "=" + i * j + "\t");
}
//j>i时,跳出上面的for循环不打印 乘号左边的数字大于乘号右边的数字 的等式,直接执行下面的换行代码,妙啊!
//这样又去掉了想要去掉的 重复等式(类似1*2=2和2*1=1这样的重复等式) ,又达到了换行的效果,绝了!
System.out.print("\n");
}
}
}

Java基础回顾_第二部分_Java流程控制

增强for循环

格式:

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

​ //执行代码;

}

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

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

经常用于遍历数组

public class Demo01 {
public static void main(String[] args) {
//定义一个数组取名为List
int[] List = {1,2,3,4,5};
for (int i : List) {
System.out.println(i);
}
}
}

Java基础回顾_第二部分_Java流程控制


break和continue

break用与强制退出循环体,即终止循环,跳出循环体;

continue用于终止循环体的某一次循环,即跳过某一次循环操作循环体继续工作到直到跳出循环体。

随笔:

​ 什么是质数

质数是指在大于1的所有自然数中,那些只能被1和本身整除的整数。

​ 一个数如果不能以它本身的一半以内的数乘以另一个数得到,那么它就是一个质数!


流程控制练习

  1. 打印三角形

    public class Demo01 {
    public static void main(String[] args) {
    //打印三角形
    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++) {
    System.out.print("*");
    } System.out.print("\n");
    }
    }
    }

    Java基础回顾_第二部分_Java流程控制