Appearance
全局配置
Appearance
程序需要根据不同的条件去进行不同的流程处理,在程序中我们称之为流程控制。 举例:用户输入4位卡号,每位数字之和大于20,中奖,小于20则不中奖。
语法: if(判断条件){ //条件成立 }else{ //条件不成立 }
if-esle是Java中最基本的流程控制语句 if后面必须跟(条件) else后面不能有(),可以直接跟{} 也可以再跟一个if() else{}可以继续嵌套if语句
// 学校举办运动会,百米赛跑成绩13秒以内有资格进入决赛,根据性别分别进入男子组和女子组。
public class Test3 {
public static void main(String[] args) {
System.out.println("请输入张三的百米成绩");
Scanner scanner = new Scanner(System.in);
int score = scanner.nextInt();
System.out.println("请输入张三的性别");
String gender = scanner.next();
if(score<13) {
if(gender.equals("男")) {
System.out.println("进入男子组");
}else {
System.out.println("进入女子组");
}
}else {
System.out.println("很遗憾,你被淘汰了!!!");
}
}
}
String类型的值比较是否相等 不能用 == 应该用equals方法进行判断
语法: switch(要判断的变量){ case 特定值1: // case 特定值2: // ... } switch-case和if-else的区别是 switch-case只能处理等值判断,不能处理大于/小于判断 if-else任何判断都可以处理
如果变量满足某个case语句, 则会执行该语句的逻辑代码,同时 该case之后的所有case不再做判断, 统一认为全部满足,逻辑代码都会执行。
如何解决: 在每一个case的逻辑代码结束之后,添加break;
switch支持的数据类型: int,short,byte,char 枚举类型,String类型 (jdk1.7之后的版本支持)
public class Test4 {
public static void main(String[] args) {
System.out.println("请输入一个数字");
Scanner scanner = new Scanner(System.in);
String str = "";
switch(str) {
case "1":
System.out.println("中了一个三等奖");
break;
case "20":
System.out.println("中了二等奖");
break;
case "30":
System.out.println("中了一等奖");
break;
default:
System.out.println("很遗憾,您没有中奖!");
break;
}
}
}
for foreach:增强型for循环 while do-while
for: for(初始化循环变量;循环条件;更新循环变量){ 循环体; }
while: 初始化循环变量; while(循环条件){ 循环体; 更新循环变量; }
do-while: 初始化循环变量; do{ 循环体; 更新循环变量; }while(循环条件);
while循环先判断,再执行。 do-while先执行,再判断。 while有可能一次都不执行。 do-while至少会执行一次。
for适用于次数确定的循环 while,do-while适用于次数不确定的循环
1.初始化循环变量; 2.循环条件; 3.迭代:更新循环变量; 4.循环体;
首先执行初始化循环变量,只执行一次。 判断循环条件是否成立,如果成立,执行循环体, 如果不成立,进行下一次循环,多次执行。 更新循环变量,多次执行。 循环体,多次执行
public class Test5 {
public static void main(String[] args) {
for(int i = 1;i <= 10000;i++) {
System.out.println(i+":Hello World");
}
}
}
// 1.循环输入张三考试的五门成绩,分别打印输出,并且计算平均分。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
float score1 = 0.0f;
float score2 = 0.0f;
float score3 = 0.0f;
float score4 = 0.0f;
float score5 = 0.0f;
for(int i = 1; i <= 5; i++) {
System.out.print("请输入张三的第"+i+"门成绩:");
switch(i) {
case 1:
score1 = scanner.nextFloat();
break;
case 2:
score2 = scanner.nextFloat();
break;
case 3:
score3 = scanner.nextFloat();
break;
case 4:
score4 = scanner.nextFloat();
break;
case 5:
score5 = scanner.nextFloat();
break;
}
}
System.out.println("张三的第1门成绩:"+score1);
System.out.println("张三的第2门成绩:"+score2);
System.out.println("张三的第3门成绩:"+score3);
System.out.println("张三的第4门成绩:"+score4);
System.out.println("张三的第5门成绩:"+score5);
System.out.println("张三的平均成绩是"+(score1+score2+score3+score4+score5)/5);
}
}
// 2.任意输入一个整数:6
// 打印如下的加法表:
// 0 + 6 = 6
// 1 + 5 = 6
// 2 + 4 = 6
// 3 + 3 = 6
// 4 + 2 = 6
// 5 + 1 = 6
// 6 + 0 = 6
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
for(int i = 0; i < num+1; i++) {
System.out.println(i + "+" + (num-i) + "=" + num);
}
}
}
// 3.打印:如下图形
// *****
// *****
// *****
// *****
// *****
public class Test7 {
public static void main(String[] args) {
for(int j = 0; j < 5; j++) {
//输出空格
for(int i = 0; i < 4 - j; i++) {
System.out.print(" ");
}
System.out.println("*****");
}
}
}
// 4.打印如下图形
// i 空格 *
// * 0 4 1
// *** 1 3 3
// ***** 2 2 5
// ******* 3 1 7
// ********* 4 0 9
public class Test8 {
public static void main(String[] args) {
for(int i = 0 ;i < 5; i++) {
//输出空格
for(int j = 0; j < 4-i; j++) {
System.out.print(" ");
}
//输出*
for(int k = 0; k < 2*i+1; k++) {
System.out.print("*");
}
//输出空格
for(int j = 0; j < 4-i; j++) {
System.out.print(" ");
}
System.out.println();
}
}
}
// 5.打印如下图形
// *
// ***
// *****
// *******
// *********
// *******
// *****
// ***
// *
public class Test9 {
public static void main(String[] args) {
//上半部分
for(int i = 0 ;i < 5; i++) {
//输出空格
for(int j = 0; j < 4-i; j++) {
System.out.print(" ");
}
//输出*
for(int k = 0; k < 2*i+1; k++) {
System.out.print("*");
}
//输出空格
for(int j = 0; j < 4-i; j++) {
System.out.print(" ");
}
System.out.println();
}
//下半部分
for(int i = 0 ;i < 4; i++) {
//输出空格
for(int j = 0; j < i+1; j++) {
System.out.print(" ");
}
//输出*
for(int k = 0; k < 7-2*i; k++) {
System.out.print("*");
}
//输出空格
for(int m = 0; m < i+1; m++) {
System.out.print(" ");
}
System.out.println();
}
}
}
// 6.输出9*9乘法口诀表
// 1*1 = 1
// 2*1 = 2 2*2 = 4
// 3*1 = 3 3*2 = 6 3*3 = 9
// ...
public class Test10 {
public static void main(String[] args) {
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
System.out.print(i+" * "+j+" = "+i*j+"\t");
}
System.out.println();
}
}
}
// 7.循环输入张三考试的五门成绩,分别打印输出,并且计算平均分,如果操作不当,输入了负数,停止录入并提示错误。
import java.util.Scanner;
public class Test11 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
float score1 = 0.0f;
float score2 = 0.0f;
float score3 = 0.0f;
float score4 = 0.0f;
float score5 = 0.0f;
//用户是否输入了负数
boolean flag = false;
for(int i = 1; i <= 5; i++) {
System.out.print("请输入张三的第"+i+"门成绩:");
float score = scanner.nextFloat();
//如果输入的成绩<0,则跳出循环
if(score < 0) {
flag = true;
// 当程序执行break时,直接停止当前循环,break之后的代码,不再执行;同时跳出整个循环体,不再执行后续的循环。
break;
}
switch(i) {
case 1:
score1 = score;
break;
case 2:
score2 = score;
break;
case 3:
score3 = score;
break;
case 4:
score4 = score;
break;
case 5:
score5 = score;
break;
}
}
if(flag) {
System.out.println("您输入有误!请重新输入");
}else {
System.out.println("张三的第1门成绩:"+score1);
System.out.println("张三的第2门成绩:"+score2);
System.out.println("张三的第3门成绩:"+score3);
System.out.println("张三的第4门成绩:"+score4);
System.out.println("张三的第5门成绩:"+score5);
System.out.println("张三的平均成绩是"+(score1+score2+score3+score4+score5)/5);
}
}
}
// 8.计算1-10之间的整数之和,如果得到的累加值大于30,则停止循环,返回当前累加值。
public class Test12 {
public static void main(String[] args) {
int sum = 0;
for(int i = 1; i <= 10; i++) {
sum += i;
if(sum > 30) {
sum -= i;
break;
}
}
System.out.println(sum);
}
}
跳出循环 break:跳出整个循环。 continue:跳出本次循环,进入下一次循环。
// 循环录入5名学生的成绩,统计成绩大于80分的学生比例。
// 求出1-10之间的偶数和。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//定义变量,记录大于80分的人数
int num = 0;
Scanner scanner = new Scanner(System.in);
int score = 0;
for(int i = 0; i < 5; i++) {
System.out.print("请输入第"+(i+1)+"位学生的成绩:");
score = scanner.nextInt();
if(score > 80) {
num++;
}
}
System.out.println(num/5.0);
}
}
使用continue
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
//定义变量,记录大于80分的人数
int num = 0;
Scanner scanner = new Scanner(System.in);
int score = 0;
for(int i = 0; i < 5; i++) {
System.out.print("请输入第"+(i+1)+"位学生的成绩:");
score = scanner.nextInt();
if(score <= 80) {
continue;
}
num++;
}
System.out.println(num/5.0);
}
}
断点调试,在程序的某一行添加断点(breakpoint), 通过调试(debug)模式运行程序,当程序执行到断点处时,就会暂停下来。
F8:跳到下一个断点处 F5:跳到当前代码所调用的方法内部 F6:跳到当前代码的下一个逻辑单位处