1.用户交互Scanner
2.顺序结构
3.选择结构
4.循环结构
5.break & continue
6.练习
1.用户交互Scanner
-
java.util.Scanner 是 java5 的新特性,我们可以通过 Scanner 类来获取用户的输入。
-
基本语法
Scanner s = new Scanner(System.in);
-
通过 Scanner 类的 next() 和 nextLine() 方法获取输入的字符串,再读取前我们一般需要使用 hasNext() 和 hasNextLine() 判断是否含有输入的数据
-
next(): next() 不能得到带有空格的字符串
/*
1.一定要读取到有效字符后才可以结束输入
2.对输入有效字符之前遇到的空白,next()会自动将其去掉
3.输入有效字符后,将后面的空白作为分隔符或结束符
*/ -
nextLine():
/*
1.以enter位结束符,nextLine()方法返回的是输入回车之前的所有字符
2.可以获得空白
*/ -
示例:
package ProcessControl.ScannerUse;
import java.util.Scanner;
// 程序可以输入多个数组,并计算这些数的sum和mean,每输入一个数用回车确认,通过输入非数字来结束输入并执行结果
public class ScannerTest_5 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
// 和
double sum=0;
// 计算输入了多少个数字
int n = 0;
System.out.println("请输入数字:");
while (s.hasNextDouble()){ // Scanner 有很多方法,注意灵活使用
double a = s.nextDouble();
n++;
sum+=a;
}
System.out.println(n+"个数的和为:"+sum);
System.out.println(n+"个数的平均值为:"+(sum/n));
s.close(); //凡是属于 IO 流的类,必须关闭节省资源
}
}
-
2.顺序结构
-
Java的基本结构就是顺序结构,除非特别指出,都是从上往下一句一句执行。
-
顺序结构是最简单的算法结构,任何一个算法都离不开的一种基本算法结构
-
语句与语句之间,框与框之间都是从上往下执行。
3.选择结构
-
if 单选择结构
if(布尔表达式){
//这是布尔表达式为true会执行的语句
} -
if 双选择结构
if(布尔表达式){
//这是布尔表达式为true会执行的语句
}else{
//这是布尔表达式为false会执行的语句
} -
if 多选择结构
if(布尔表达式 1){
//这是布尔表达式 1 为true会执行的语句
}else if(布尔表达式 2){
//这是布尔表达式 2 为true会执行的语句
}else if(布尔表达式 3){
//这是布尔表达式 3 为true会执行的语句
}else{
//这是以上布尔表达式都为false会执行的语句
}示例:
package ProcessControl.OrderProcess;
import java.util.Scanner;
public class IfDemo_2 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入您本次考试的成绩:");
double score = s.nextDouble();
if(score==100){
System.out.println("恭喜你获得了满分!");
}else if((score<100)&&(score>=80)){
System.out.println("考的不错哦!");
bu }else if((score<80)&&(score>=60)){
System.out.println("还需要继续加油!");
}else if((score>=0)&&(score<60)){
System.out.println("考成这样你还睡得着觉!!!");
}else{
System.out.println("输入内容不合法");
}
}
} -
嵌套的 if 结构
if(布尔表达式 1){
//这是布尔表达式为true会执行的语句
if(布尔表达式 2){
//这是布尔表达式 2为true会执行的语句
}else{
//这是布尔表达式 2为false会执行的语句
}
}else{
//这是布尔表达式为false会执行的语句
} -
switch多选择结构
多看看源码学习编程思路 此处可以根据IDEA的反编译功能多看看源码
-
wsitch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
-
switch 语言中的变量类型可以是:
-
byte, short, int, char
-
String类型(从Java SE7开始),同时case标签必须为字符串常量或者字面量
-
格式:
switch(expression){
case value:
//语句
break;
case value:
//语句
break;
case value:
//语句
break; //可选
// 可以由任意数量的case语句
default: //可选
//语句
} -
4.循环结构
-
while循环
while(布尔表达式){
// 循环内容
}-
只要布尔表达式为true,就会一直循环里面的内容
-
由于大多数情况需要程序停止的,需要一个让 表达式失效的方法 来结束循环
-
有点程序需要一直循环,比如服务器的请求响应监听
-
循环条件一直为true就会死循环,我们应该避免
-
思考计算 1+2+...+100 = ?
-
-
do...while循环
do{
// 代码语句
}while(布尔表达式);-
对应do...while循环,若条件不满足,则不能进入循环,但有时候即使不满足条件,也需要至少执行一次循环体的时候,会用到
-
do...while循环至少执行一次循环体
do...while循环 与 while 循环区别
-
while先判断后执行,do...while 先执行后判断,因此do...while 循环至少循环一次。
-
-
-
for循环
-
for循环时支持迭代的一种通用结构,最有效,灵活的循环结构
-
for循环的循环次数再执行之前就已经确定
for(初始化;布尔表达式;迭代){
// 循环体
}-
练习
-
计算 0 - 100 之间的奇数与偶数和
-
用while或for循环输出1-10000之间能被5整除的数,并且每行输出3个
-
打印乘法表
-
-
-
-
主要用于数组中的增强型for循环(Java5 引入)
-
先了解,后面数组会重点运用
-
声明语句:声明新的局部变量,该变量的类型必须与数组元素的类型相匹配。
-
新的局部变量的作用域限定在循环语句这块,作用时其值与数组元素的值相等
-
表达式:表达式时要访问的数组名,或者是返回值为数组的方法
for(声明语句:表达式){
//循环体
}
例子:
for(int n:numbers){
// n 的类型要与数组numbers中的元素相匹配
// n 的作用域限定在 函数体 这块
} -
5.break & continue
-
break 在任何循环的主体部分,均可以用 break 控制循环的流程,break 用于强行退出循环。
-
continue 在循环体语句体中,用于跳出本次循环,不会执行循环体中尚未执行的语句,进入下一次循环的判定。
-
关于goto关键字
-
goto 关键字很早就在程序设计语言中出现。尽管java保留了这个关键字,但并未得到正式使用。带标签的continue 和break 能看到goto的影子
-
标签是指后面跟一个冒号的标识符,如 label:
-
在循环之前设置标签的唯一理由:希望在该循环中嵌套另一个循环,由于break 和 continue只能中断当前循环,若配合标签使用,就可以中断到存在标签的地方。
// 打印101-105之所有质数
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+"\t")
}
-
6.练习
-
需求:打印三角形
// 主要思路是将它划分为三个三角形进行打印
package ProcessControl.OrderProcess;
public class ProcessTest {
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.println();
}
}
}