程序的流程结构
顺序结构
分支结构
条件使用如果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(逻辑表达式){
具体执行代码
}
如果逻辑表达式为真,就会执行大括号里面的代码。
If—else结构
If(逻辑表达式)
{
//条件为真时候的执行代码
}
Else
{
//条件为假的时候执行代码
}
if(flag)
{
int c=a/b;//c代表商
System.out.println("商是:"+c);
}
else
{
System.out.println("你输入的数字不能为0!!!");
}
If—else 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("正常应答");
}
}
}
开关语句switch—case语句
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(逻辑表达式)
{
//其中的一次业务,一次加法
}
逻辑表达式 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循环使用场合:
一般情况下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("猜大了");
}
}
}
}
}
Break,continue关键字
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();
}
}
猜数字游戏代码:
设定一个答案,让用户猜,如果猜大了,提示,如果和答案一致,提示用户正确,并且告诉用户猜了多少次。
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);
}
}