Java流程控制
用户交互Scanner
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
//使用next方式接收
String str = scanner.next();
System.out.println("输出内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源
scanner.close();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
String str = scanner.nextLine();
System.out.println("输出内容为:" + str);
scanner.close();
If选择结构
- 单重判断:if
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
//equals:判断字符串是否相等
if(s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
- 双重判断(包含否定):if—else
public static void main(String[] args) {
//考试分数大于60就是及格,小于60就不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if(score>60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
}
- 多重判断(包含否定):if—else if—else if-------else
public static void main(String[] args) {
//考试分数大于60就是及格,小于60就不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score == 100) {
System.out.println("恭喜满分");
}else if(score<100 && score>=90){
System.out.println("A级");
}else if(score<90 && score>=80){
System.out.println("B级");
}else if(score<80 && score>=70){
System.out.println("C级");
}else if(score<70 && score>=60){
System.out.println("D级");
}else if(score<60&& score>=0){
System.out.println("不及格");
}else {
System.out.println("成绩不合法");
}
scanner.close();
}
Switch 选择结构
switch—case结构:case有穿透现象,无break时,将不退出选择,继续往下执行直至结束
public static void main(String[] args) {
//case:穿透现象 switch:匹配一个具体的值
char grade = 'E' ;
switch (grade){
case 'A':
System.out.println("优秀");
break;//可选
case 'B':
System.out.println("良好");
break;//可选
case 'C':
System.out.println("及格");
case 'D':
System.out.println("不及格");
break;//可选
default:
System.out.println("不合法");
}
}
反编译
- 先找到class文件
2. 复制相应class文件
3. 找到相应包含Java的包
- 进入相应的包后,将复制的class文件粘贴进去,即可打开class,看到源码
public static void main(String[] args) {
String name = "呜呜";
//JDK7的新特性,表达式结果可以是字符串!!!
//字符的本质还是数字
//反编译 java---class(字节码文件)---反编译(IDEA)
switch (name){
case "哈哈" :
System.out.println("666");
break;
case "呵呵" :
System.out.println("000");
break;
case "呜呜" :
System.out.println("555");
break;
default:
System.out.println("???");
}
public SwichDemo02() {
}
public static void main(String[] args) {
String name = "呜呜";
byte var3 = -1;
switch(name.hashCode()) {
case 691072:
if (name.equals("呜呜")) {
var3 = 2;
}
break;
case 691872:
if (name.equals("呵呵")) {
var3 = 1;
}
break;
case 694528:
if (name.equals("哈哈")) {
var3 = 0;
}
}
switch(var3) {
case 0:
System.out.println("666");
break;
case 1:
System.out.println("000");
break;
case 2:
System.out.println("555");
break;
default:
System.out.println("???");
}
}
循环结构
While循环结构
public static void main(String[] args) {
//计算1+2+3+...+100=?
int i = 0 ;
int sum = 0 ;
while (i<100){
i++;
sum+=i;
}
System.out.println(sum);
}
死循环:
public static void main(String[] args) {
//死循环
while (true){
//等待客户端连接
//定时检查
}
}
DoWhile循环结构
public static void main(String[] args) {
//计算1+2+3+...+100 = ?
int i = 0 ;
int sum = 0 ;
System.out.println(sum);
do{
sum = sum + i;
i++;
}while(i<=100);
System.out.println(sum);
}
For循环结构
while 循环 与 for 循环 比较
public static void main(String[] args) {
int a = 1; //初始化条件
while (a<=100) { //条件判断
System.out.println(a);
a+=20; //迭代
}
System.out.println("while循环结束");
// 初始化--条件判断--迭代
//快捷键 比如: 100.for--回车
for (int i=1;i<=100;i+=20){
System.out.println(i);
}
System.out.println("for循环结束");
/*
死循环:for(;;){}
*/
}
参考练习:
-
public static void main(String[] args) { //练习1:计算0到100之间的奇数和偶数的和 int oddsum = 0; //奇数 int evensum = 0; //偶数 for (int i = 0; i <= 100; i++) { if (i%2!=0){ oddsum+=i; }else { evensum+=i; } } System.out.println("奇数之和:"+oddsum); System.out.println("偶数之和:"+evensum); }
-
public static void main(String[] args) { //练习2: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"); } } //println 输出会完全换行 //print 输出不会完全换行 }
-
打印九九乘法表
public static void main(String[] args) {
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(i+"*"+j+"="+(j*i)+"\t");
}
System.out.println();
}
}
-
打印三角形
* *** ***** ******* *********
public static void main(String[] args) { //打印三角形 5行 for (int i = 0; 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.println(); } }
调试debug的使用
- 生成断点
-
打开debug
-
观察变化
增强For循环
public static void main(String[] args) {
int[] number = {10,20,30,40,50};
for (int i = 0; i < 5; i++) {
System.out.println(number[i]);
}
System.out.println("===========================");
//遍历数组的元素
//增强 for 循环
for(int x : number){
System.out.println(x);
}
}
break、continue、goto
break 与 continue 比较:
public static void main(String[] args) {
int i = 0;
while (i<100){
i++;
System.out.println(i);
if (i==30){
break; //强制退出循环 不跳出程序
}
}
}
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);
}
}
goto运用:
public static void main(String[] args) {
//打印101~150之间所有质数
int count = 0;
outer:for (int i = 101; i < 150; i++) {
for (int j = 2; j < i/2; j++) {
if(i % j == 0){
continue outer; //返回标签
}
}
System.out.print(i+" ");
}
}