一、用户交互Scanner
-
Scanner对象:java提供了这样一个工具类,我们可以通过Scanner类来获取用户的输入 Java.util.Scanner
-
基本语法如下:
Scanner s = new Scanner(System.in);
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有数入的数据
-
注:
-
next()
-
一定要读取到有效字符后才可以结束输入
-
对输入有效字符前遇到的空白,next()方法会自动将其去掉
-
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
-
next()不能得到带有空格的字符串
-
-
nextLine()
-
以enter为结束符,返回的是输入回车前的所有字符
-
可以获得空白
-
-
二、顺序结构
-
java的基本结构就是顺序结构。除非特别指明,否则就安装顺序一句一句执行
-
顺序结构是最简单的语法结构,它是任何一个算法都离不开的一种基本算法结构
三、选择结构
1、if单选择结构:判断一个东西是否可行,才去执行
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
2、if双选择结构
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}else{
//如果布尔表达式为false将执行的语句
}
3、if多选择结构
if(布尔表达式1){
//如果布尔表达式1为true将执行的语句
}else if(布尔表达式2){
//如果布尔表达式2为true将执行的语句
}else if(布尔表达式3){
//如果布尔表达式3为true将执行的语句
}else {
//如果以上布尔表达式都不为true将执行的语句
}
4、嵌套的if结构
if(布尔表达式1){
//如果是布尔表达式1的值将执行代码
if(布尔表达式2){
//如果是布尔表达式2的值将执行代码
}
}
5、switch多选择结构(匹配一个具体的值)
switch(表达式){
case value:
//语句
break;//最好每个case后面都加上break,否则会出现case穿透现象
case value:
//语句
break;
case value:
//语句
break;
default://可选
//语句
}
-
switch语句中的变量类型可以是:
-
byte、short、int或者char
-
从java SE 7开始,switch支持字符串string类型了
-
同时case标签必须为字符串常量或字面量
-
四、循环结构
1、while循环(先判断后执行)
while(布尔表达式){
//循环内容
}
-
只要循环表达式为true,循环就会一直进行下去
-
我们大多数情况是会让循环停止下来的,所以我们需要一个让表达式失效的方式来结束循环
-
少部分的情况需要循环一直执行,比如服务器的请求响应监听等
-
循环条件一直为true就会造成无限循环(死循环),业务编程中应该尽量避免死循环,会影响程序性能或者造成程序卡死崩溃
2、do...while循环(先执行后判断)
do{
//代码语句
}while(布尔表达式);
3、for循环
for(初始化;布尔表达式;更新){
//代码语句
}
-
-
先执行初始化步骤,可以声明一种类型,但可以初始化一个或多个循环控制变量,也可以是空语句。
-
接着检测布尔表达式的值,结构为true,循环体被执行,结果为false循环终止。
-
执行一次循环后,更新循环变量。
-
再次检测布尔表达式的值,循环执行上面过程
-
4、增强型for循环
for(声明语句:表达式){
//代码语句
}
-
java5引入,主要用于数组或集合
-
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等
-
表达式:是要访问的数组名,或者是返回值为数字的方法
public class mumber {
public static void main(String[] args) {
int[] numbers={10,20,30,40,50};
//普通for循环
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
System.out.println();
//增强型for循环
for(int x:numbers){
System.out.println(x);
}
}
}
五、break和continue
-
break:在任何循环的主体部分,均可用break控制循环流程。它用于强行退出循环,不执行循环中剩余的语句。
-
continue:用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
六、练习
-
打印四种不同方向的九九乘法表
public class nine {
//九九乘法表
public static void main(String[] args) {
//左下
for (int i = 1; i < 10; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"*"+i+"="+(i*j)+"\t");
}
System.out.println();
}
System.out.println();
//左上
for (int i = 1; i<10 ; i++) {
for (int j=i; j < 10; j++) {
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
System.out.println();
//右上
for (int i = 1; i<10 ; i++) {
for(int j=1;j<i;j++){
System.out.print(" "+"\t");
}
for (int j=i; j < 10; j++) {
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
System.out.println();
//右下
for (int i = 9; i>=1 ; i--) {
for(int j=1;j<i;j++){
System.out.print(" "+"\t");
}
for (int j=i; j<10; j++) {
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
}
}
2. 打印三角形(五行)
public class three {
public static void main(String[] args) {
//打印三角形
for (int i = 0; i < 5; i++) {
for (int k = i; k <5; k++) {//输出空格
System.out.print(" ");
}
for (int j=0 ;j<=(i+i); j++) {
System.out.print("*");
}
System.out.println();
}
}
}