Java流程控制
用户交互Scannar
我们可以用Scanner类来获取用户的输入
import java.util.Scanner:导入工具包
//创建一个扫描器对象,用于接收键盘数据
Scanner s = new Scanner(System.in)
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
nextLine(): - 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
**
//使用next方法接收
if(scanner.hasNext()){
//使用next方法接收
String str = scanner.next();//这句执行完程序会等待用户输入
System.out.println("输出的内容为: "+str);
}
//凡是属于IO流的类最好用完就关掉,不然会一直占用资源
scanner.close();//一定要记得关闭
**
练习:输出一组数的和,平均数
顺序结构
从上到下的顺序进行
选择结构
- if单选择结构
if(布尔表达式){如果布尔表达式为true则执行 }
方法:equals判断字符串是否相等,因为== 不仅判断内容还会判断地址,所以不用==判断字符串。 - if双选择结构
if(){}
else{} - if多选择结构
if(){}else if(){}else{}
只要其中一个为true则直接跳过其他的 - 嵌套的if结构
if(){
if(){
}
}
5. switch多选择结构
switch case 语句判断一个变量与一系列值中某个值是否相等,每一个值成为分支
变量类型:byte,short,int,char,如果是String类型case标签必须为字符串常量或者字面量
case穿透,就是把代码通过hash解码,java-class(字节码),反编译就是把class编译成Java让人看懂。
switch(){
case value:
sout(输出)
break;(可选)
case value:
break;
default//可选
}
循环结构
- while循环
while(布尔表达式){
//循环内容
}- 只要布尔表达式为true,就是一直循环
- 大多时候我们需要一个失效的条件,使其跳出循环。
- 少部分需要一直响应,比如服务器的请求响应监听
- do while循环
对于do while语句而言,至少会执行一次
do{
}while(布尔表达式)
区别:while先判断后执行,do while是先执行后判断所以至少会执行一次。 - for循环
练习(for):
- 计算0到100之间的奇数和偶数的和
package com.xin.Scanner;
public class ForDemo5 {
public static void main(String[] args) {
int b = 0;
int c = 0;
// 初始化条件判断,迭代
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
b = b + i;
} else {
c = c + i;
}
System.out.println(i);//在循环里定义的变量,不能在循环外面输出
}
System.out.println("奇数和是:" + c + "\n偶数和是: " + b);
}
}
- 用while或者for循环输出1-1000之间能被5整除的数字,并每行输出三个
//用定义计数器的方式换行,也可以尝试用(i%(5*3)),打印三个数字之后换行,一样的道理。
package com.xin.Scanner;
public class ForDemo6 {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 1000; i++) {
if (i % 5 == 0) {
//用制表符让打印出来的更好看,注意println会自动换行,这里要用print
System.out.print(i + "\t");
count++;
if (count % 3 == 0) {
//换行还可以用System.out.print("\n");
System.out.println();
}
}
}
}
}
- 打印九九乘法表
package com.xin.Scanner;
public class ForDemo7 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
//注意n<=i可以避免打出相同的式子
for (int n = 1; n <= i; n++) {
int m = i * n;
//注意顺序,小的在前面
System.out.print(n + "*" + i + "=" + m + "\t");
}
System.out.println();
}
}
}
- 增强for循环
针对数字,字符串的循环
package com.xin.Scanner;
public class ForDemo8 {
public static void main(String[] args) {
int[] numbers = { 10, 20, 30, 40, 50 };
// 遍历数组的元素
for (int x : numbers) {
System.out.println(x);
}
--------------------------------------
for(int i=0;i<5;i++){
System.out.println(number[i])
}//这个得到的结果是一样的
}
}
break&contiune&goto
break可以在任何循环语句的主题部分,用于强制退出循环,不执行循环中剩余的语句。
continue语句用于终止某次循环过程,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
//break
package com.xin.xunhuan;
public class ContinueDemo {
public static void main(String[] args) {
int a = 0;
while (a <= 100) {
System.out.print(a);
a++;
if (a % 10 == 0) {
System.out.println();
break;
}
}
}
}
//0123456789
package com.xin.xunhuan;
public class ContinueDemo {
public static void main(String[] args) {
int a = 0;
while (a <= 100) {
a++;
if (a % 10 == 0) {
System.out.println();
continue;
}
System.out.print(a);
}
}
}
//123456789
//111213141516171819
//212223242526272829
//313233343536373839
//414243444546474849
//515253545556575859
//616263646566676869
//717273747576777879
//818283848586878889
//919293949596979899
//101
goto
带标签的break和continue就是goto的影子
标签就是指后面跟一个冒号的标识符,例如:label:
对Java来说唯一用到标签的地方就是循环语句之前
练习:打印三角形
package com.xin.xunhuan;
public class TriangleDemo {
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("*");
}
//上面循环结束应该是右边对齐的三角形,加一个循环补齐,第一行补0个,第二行补一个,以此类推
for (int j = 1; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
//倒三角
package com.xin.xunhuan;
public class TriangleDemo {
public static void main(String[] args) {
for (int i = 5; i >= 1; i--) {
//空格递增
for (int j = 5; j > i; j--) {
System.out.print(" ");
}
//第一行输出5个,然后递减
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
//和上一个循环的区别是第一行只要补4个,然后递减
for (int j = 1; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}

浙公网安备 33010602011771号