Java流程控制

Java流程控制

一、Scanner

Scanner s=new Scanner(System.in);
//在IDE中可以输入new Scanner然后Alt+Enter自动补充
//创建扫描器对象,用于接收键盘数据

通过Scanner类的next()和nextLine()方法获取字符串,读取前需要使用hasNext()和hasNextLine()判断是否还有输入的数据

流程1

凡是属于IO流的类,如果不关闭会一直占用资源,所有用完要关闭
scanner.close()

流程2

next()和nextLine()区别

next():

  • 一定要读取导有效字符才可以结束输入
  • 对于有效字符前的空白,会自动去掉
  • 只有输入有效字符后,才可以将后面输入的空白作为分隔符或者有效符
  • 不能得到带有空格的字符串

nextLine()

  • 以Enter为结束符,返回回车前的所有字符
  • 可以获得空白

必须掌握

Scanner scanner=new Scanner(System.in);
Double s=scanner.NextDouble();
scanner.close()

例题:
流程3

二、顺序结构

按照顺序依次进行

三、选择结构

1、if单选择结构

if(布尔表达式){
//布尔表达式为true时即将执行
}

equals:判断字符串是否相等
if (s.equals("Hello")){
Symtem.out.println("s")
}
System.out.println("end")

//如果s与equals相等,那么输出s,否则输出end

2、if双选择结构

if (score>60){
Symtem.out.println("及格")
}else{
System.out.println("不及格")
}

3、if多选择结构

if(){
}else if{}
else{}

只要一个else if为true,其他else if和if就会跳过,不会执行

4、if嵌套结构

if(){
if(){
}
}
可用于二分法
比如:我们需要查找一个在1~100的数

5、switch多选择结构

switch(){
case value
语句
break;//可选
case value1
语句
break
default:
语句
}

注意:
switch语句中的变量类型支持byte、short、int、char、string
case标签必须为字符串常量或字面量

四、循环结构

1、while循环

while(布尔表达式){

}
布尔表达式一直为true的话,循环一直不会停止
等待客户端连接时,比如QQ等待消息时,可以一直为true,死循环;比如定时检查闹钟

2、do~while循环

do{

}while(布尔表达式);
循环语句至少执行一次,是先执行再判断

3、for循环

for(初始化;布尔表达式;更新){
代码语句
}

死循环:
for(; ; ){

}
在循环中:a+=2 这是迭代的意思

初始化可以声明一种类型,但可以声明一个或者多个循环控制变量,也可以时空语句
如果布尔表达式为true,循环体执行,否则终止。开始执行循环后,先执行一次循环后,在更新循环控制变量,最后再次检测布尔表达式。

练习

计算1~100奇数和偶数的和

public class HelloWorld {
public static void main(String[] args) {
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);
}
}

用while或for循环输出1~1000之间能被5整除的数,并且每行输出3个

for循环

public class HelloWorld {
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
}
if (i % 15 == 0) {
System.out.println();
}
}
}

while循环:
public class HelloWorld {
public static void main(String[] args) {
int i = 1;
while (i <= 60) {
if (i % 5 == 0) {
System.out.print(i + "\t");
}
if (i % 15 == 0) {
System.out.println();
}
i++;
}
}
}
注意:这里的\t是制表符,可以使同一行两个数隔开

打印九九乘法表

外层循环控制行,内层循环控制列
步骤:
先打印第一列
把固定的1用一个循环包起来
去掉重复项 n<m (按行看)
最后调整样式
public class HelloWorld {
public static void main(String[] args) {
for (int m = 1; m <= 9; m++) {//第m行乘于第n列,其中n<m
for (int n = 1; n < m; n++) {//n代表列,m代表行
System.out.print(n+""+m+"="+(nm)+"\t");
}
System.out.println();
}
}
}

4、增强for循环

本质是迭代器,重点用来循环数组和集合的

public class HelloWorld {
public static void main(String[] args) {
int [] numbers={10,2,3,4,5};//声明数据类型int [],再声明数组名称numbers,最后赋值
for(int x:numbers){//将numbers数组里的值赋给变量x
System.out.println(x);
}
/*以下的写法跟增强for循环一样
int [] numbers={10,2,3,4,5};
for(i=0;i<=4;i++){
System.out.println(numbers[i]);依次输出数组numbers里的值
}
* */
}
}

5、break和continue

break用于强制退出,不执行循环剩余的语句,也可以在switch语句中使用

continue用于终止某次循环,即跳过本次循环体中未执行的语句,再接着进行下一次是否循环的语句

关于goto关键字:

goto是Java的保留字,但并未在语言中得到使用

标签是指后面跟一个冒号的标识符 如 label:
唯一用到标签的地方是在循环语句之前,在循环之前设置是希望在里面嵌套一个循环,由于break和continue关键字只中断当前循环,若随标签一起使用,它们就会中断到存标签的地方

求101~150的质数

public class HelloWorld {
public static void main(String[] args) {
//求101~150的质数
outer:for (int i = 101; i < 150; i++) {
for (int j = 2; j < i/2; j++) {
if(i%j= =0) {
continue outer;//此处如果为true,那就会跳回标签所在处,i重新加1,重新执行
}
}
System.out.print(i+"\t");//如果i%j==0为false,则执行该语句,不执行continue outer;
}
}
}

五、流程控制练习

打印三角形(5行)

public class HelloWorld {
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();
}
}
}

posted @   XiaoChen要努力!!!  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示