三、程序的控制结构

时间:2022-09-08 17:16:35


程序的流程结构

顺序结构

分支结构

条件使用如果IF,分支用普通的java语句段。语句段应该在一对{}

做一个除法运算,然后打印出商。

public class TestDivide {

 

public static void main(String[] args) {

//TODO Auto-generated method stub

int a=9;//被除数

int b;//除数

System.out.println("请输入一个除数:");

//先构建一个输入器

Scannerscan=new Scanner(System.in);

b=scan.nextInt();

//加一个条件判断下一行除法运算到底算不算?

boolean flag=(b!=0);

//如果flag为真,允许运行下面的除法运算

if(flag)

{

int c=a/b;//c代表商

System.out.println("商是:"+c);

}

}

}

If结构-----

if(逻辑表达式){

具体执行代码

}

如果逻辑表达式为真,就会执行大括号里面的代码。

Ifelse结构

If(逻辑表达式)

{

//条件为真时候的执行代码

}

Else

{

//条件为假的时候执行代码

}

if(flag)

{

int c=a/b;//c代表商

System.out.println("商是:"+c);

}

else

{

System.out.println("你输入的数字不能为0!!!");

}

Ifelse if---…….else if…………..else

 package yantai;

 

import java.util.Scanner;

 

/**

 *多分支结构

 *@author chidianwei

 *

 */

public class IfElseIfDemo {

 

public static void main(String[]args) {

//模拟呼入一个号码

StringcallIn="";

System.out.println("---------请呼入号码----------");

Scannerscan=new Scanner(System.in);

callIn=scan.next();//呼入号码

/*

 *根据号码,判断相应的应答

 */

if(callIn.equals("110")){

System.out.println("哥没空");

}

else if(callIn.equals("95530")){

System.out.println("马上就到");

}

else if(callIn.equals("骗子")){

System.out.println("---------------");

}

else if(callIn.equals("女神")){

System.out.println("正好想看电影");

}

else{

System.out.println("正常应答");

}

}

}

开关语句switchcase语句

Switch(变量或者表达式)---变量可以取整数类型(int,short,byte,char,String(jdk1.7之后才开始支持)

{

Case常数值:{ ---------------------------break;}

Case常数值:{ ---------------------------break;}

Case常数值:{ ---------------------------break;}

}

实例

1.输入一个学生成绩,判断该学生成绩属于什么档次的。

    60分以下不及格,60-80合格,80-90良好,90以上优秀,其他输入不合理。 

   /*

 * 1.输入一个学生成绩,判断该学生成绩属于什么档次的。

         60分以下不及格,60-80合格,80-90良好,90以上优秀,其他输入不合理。

 */

1. 多分支结构

/*

 *输入一个学生成绩,判断该学生成绩属于什么档次的。

         60分以下不及格,60-80合格,80-90良好,90以上优秀,其他输入不合理。

 *

 */

Scannerscan=new Scanner(System.in);

System.out.println("请输入学生的分数:");

int score =scan.nextInt();

//判断score值在一个什么档次

//1.处理掉用户不合理的输入

if(score<0||score>100){

System.out.println("你的输入不合理!");

}

else{

if(score<60){

System.out.println("不及格");

}

else if(score<80){

System.out.println("及格");

}

else if(score<90){

System.out.println("良好");

}

else{

System.out.println("优秀");

}

}

2.switch case

package exercise;

 

import java.util.Scanner;

 

public class ScoreSwitch {

 

public static void main(String[]args) {

/*

 *输入一个学生成绩,判断该学生成绩属于什么档次的。

         60分以下不及格,60-80合格,80-90良好,90以上优秀,其他输入不合理。

 *

 */

Scannerscan=new Scanner(System.in);

System.out.println("请输入学生的分数:");

int score =scan.nextInt();

//判断score值在一个什么档次

//1.处理掉用户不合理的输入

if(score<0||score>100){

System.out.println("你的输入不合理!");

}

else{

switch(score/10)

{

case 6:

System.out.println("及格");

break;

case 7:

System.out.println("及格");

break;

case 8:

System.out.println("良好");

break;

case 9:

System.out.println("优秀");

break;

case 10:

System.out.println("优秀");

break;

default:

System.out.println("不及格");

break;

}

}

}

 

}

 

循环结构

循环?

反复做同样的事情

为什么要有这种程序结构?

程序编码太过复杂,需要有一种简单的结构直接实现重复的业务。

循环三要素:循环变量,判断条件,循环步长 

While循环

//1加到100,求和并打印出来。

 

Int i=0;

While(逻辑表达式)

{

 

//其中的一次业务,一次加法

 

}

 

  1. 逻辑表达式 2.执行代码也叫循环体,在一个大括号里面 3.循环变量

循环变量是需要随着循环的进行不断变化

代码:

//1加到100,求和并打印出来。1+2+3+。。。。。+100

int sum=0;//

int i=0;//i表示循环变量

while(i<100){

sum=sum+(i+1);

i++;

}

System.out.println("最后和是:"+sum);   

Do-----while循环

Do{

 

 

}while(逻辑表达式);

Dowhile循环和while循环区别:

本质上都是循环,dowhile是先执行一次,再做判断是否要执行下一次。至少执行一次。

While循环式先判断表达式是否成立,如果不成立,直接一次也不执行。

习题:1*2*3.。。。*10  10的阶乘

public static void main(java.lang.String[] args);

     0  iconst_0

     1  istore_1 [sum]

     2  iconst_0

     3  istore_2 [i]

     4  goto 16

     7  iload_1 [sum]

     8  iload_2 [i]

     9  iconst_1

    10  iadd

    11  iadd

    12  istore_1 [sum]

    13  iinc 2 1 [i]

    16  iload_2 [i]

    17  bipush 100

    19  if_icmplt 7

    22  getstatic java.lang.System.out : java.io.PrintStream [16]

    25  new java.lang.StringBuilder [22]

    28  dup

    29  ldc <String "最后和是:"> [24]

    31  invokespecial java.lang.StringBuilder(java.lang.String) [26]

    34  iload_1 [sum]

    35  invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [29]

    38  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [33]

    41  invokevirtual java.io.PrintStream.println(java.lang.String) : void [37]

    44  return

For循环

For(表达式1;表达式2;表达式3)

{

//循环体

 

}

改造后加和代码

//表达式1,初始化循环变量;表达式2表示逻辑表达式,表达式3修改循环变量

for(int i=0;i<100;i++)

{

 

sum=sum+(i+1);

 

}

For循环和while循环使用场合:

  1. 一般情况下for循环用于确定次数的循环,次数指的是循环的次数提前就知道

不确定次数用while循环

比如说,反复提示用户输入的这种情况,可以用while循环,因为不确定次数

 

public static void main(String[]args) {

 int answer=88;

 Scannerscan=new Scanner(System.in);

 while(true){

 System.out.println("请输入一个数字:");

 int num=scan.nextInt();//用户猜的数字

 if(num==answer){

 System.out.println("恭喜你,猜对了!");

 break;

 }

 else{

 //判断num是猜大了还是小了

 if(num<answer){

 System.out.println("猜小了");

 }

 else{

 System.out.println("猜大了");

 

 }

 }

 }

 

}

}

 

Breakcontinue关键字

Break表示跳出本循环

Break跳出哪一层循环式可以控制的。

通过标签控制。

 

public static void main(String[] args) {

//TODO Auto-generated method stub

aa:for(int i=1;i<=9;i++){

//打印本行的式子1----1 2----2 i-----i

bb:for(int j=1;j<=i;j++){

if(i==2){break aa;}

System.out.print(i+"*"+j+"="+i*j+"   ");

}

System.out.println();

}

}

 

 

 

Continue表示跳出本次循环

 

循环嵌套

请输出如下图形?

三、程序的控制结构 

 

public static void main(String[] args) {

//TODO Auto-generated method stub

//首先反复打印行,每一行里面反复打印*

for(int i=0;i<10;i++)

{

//每一次循环里面反复打印*,0行打印10*,第1行打印9*,第2行打印8*.i行打印.10-i...

for(int j=0;j<=i;j++){

System.out.print("*   ");

}

 System.out.println();

}

}

 

 

 

 

 

 

 

 

打印倒三角

public static void main(String[] args) {

//TODO Auto-generated method stub

//首先反复打印行,每一行里面反复打印*

for(int i=0;i<10;i++)

{

//每一次循环里面反复打印*,0行打印10*,第1行打印9*,第2行打印8*.i行打印.10-i...

for(int j=0;j<10-i;j++){

System.out.print("*   ");

}

 System.out.println();

}

}

 

 

  1. 猜数字游戏代码:

设定一个答案,让用户猜,如果猜大了,提示,如果和答案一致,提示用户正确,并且告诉用户猜了多少次。

package com.gs;

 

 

import java.util.Random;

import java.util.Scanner;

 

public class GuessNumber {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

/*设置一个1-100之间的数字作为答案,让用户猜大小,如果用户输入的数字大于该答案,

提示你猜大了,否则,提示猜小了,一直到用户猜对答案为止。并统计在这个过程中,

用户花了多少次猜对答案。*/

Random r=new Random();

int answer=r.nextInt(100);

int guessNumber=0;

//初始输入一个数字

Scanner scan=new Scanner(System.in);

System.out.println("请输入一个数字:");

guessNumber=scan.nextInt();

int i=1;

while(guessNumber!=answer){

i++;

if(guessNumber>answer){

System.out.println("你猜大了,请重新输入");

guessNumber=scan.nextInt();

}

if(guessNumber<answer){

System.out.println("你猜小了,请重新输入");

guessNumber=scan.nextInt();

}

}

System.out.println("恭喜你,猜对了!你猜的次数是"+i);

}

 

}