Java流程控制
JAVA流程控制
用户交互Scanner
java.util.Scanner是java5的新特征,我们可以通过Scanner类来获取用户的输入。
基本语法为:
Scanner s=new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入字符串,用hasNext()与hasNextlin()判断是否还有输入的数据。
next():
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串
netxtLine():
- 以Enter为结束符,也就是说nextLine()返回的输入回车之前的所有字符。
- 可以获取空白。
示例1:
System.out.println("scanner的hasNext方法测试:-----------");
if(a.hasNext()==true) {
String str = a.next();
/*
hasNext获取的已空格为分隔,空格以后不再获取
* */
System.out.println("你输入的值为:" + str);//输出值为:你输入的值为:hello
}
a.close();// io流都需要在完成使用后结束关闭,不然会一直占用资源
示例2:
Scanner a=new Scanner(System.in);
System.out.println("请输入字符串");
if(a.hasNextLine()){
String v=a.nextLine();//hasNextline是已回车键作为 分隔
/*
* 请输入字符串
ss a v
你输入的字符串为:ss a v
* */
System.out.println("你输入的字符串为:"+v);
}
a.close();
示例3:获取数入数字
System.out.println("请输入整数:");
if(a.hasNextInt()){
int b=a.nextInt();//程序会等待用户数入完毕
/*
*请输入整数:
* 20
* 你输入的整数值为:20
* */
System.out.println("你输入的整数值为:"+b);
} else
{
System.out.println("请注意你输入的非整数值");
}
a.close();
示例4:结合循环求数入个数及和
Scanner a=new Scanner(System.in);
int b=0;
float sum=0.0f;
System.out.println("请输入要累加的金额");
while (a.hasNextFloat())//数入字符串结束
{
float v=a.nextFloat();
sum+=v;
b++;
}
/*请输入要累加的金额
10
29
33
ss
你输入的累计金额为:72.0
你输入金额次数:3
*/
System.out.println("你输入金额次数:"+b);
System.out.println("你输入的累计金额为:"+sum);
a.close();
}
实例5:
Scanner a=new Scanner(System.in);
System.out.println("请数入整数");
if(a.hasNextInt()){
int c=a.nextInt();
System.out.println("你输入的整数为:"+c);
}
else {
System.out.println("你数入的不是整数");
}
System.out.println("请数入小数:");
if(a.hasNextFloat()){
float x=a.nextFloat();
System.out.println("你输入的小数为:"+x);
}else {
System.out.println("你数入的不是小数");
}
a.close();
//输出结果1;
请数入整数
1.1
你数入的不是整数
请数入小数:
你输入的小数为:1.1
//输出结果2:
请数入整数
1
你输入的整数为:1
请数入小数:
1
你输入的小数为:1.0
顺序结构
- java的基本机构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间是按从上到下的顺序进行。他是任何一个算法都离不开的基本结构
选择结构
if单选择结构
if双选择结构
public static void main(String args[])
{
int a =50;
if(a>60){
System.out.println("你的分数及格");
}else
{
System.out.println("你的分数不及格");
if多选择结构
public static void main(String args[]){
/** 选择结构 if多分支,
* if语句中至多有1个else语句,else语句在所有else if 语句之后
* if可以有多个else if语句,语句检测为true,其他的 else if以及else语句都跳过执行
*/
int a=143;
if(a>=90&&a<=100){
System.out.println("你的分数评定为优");
}else if(a<90&&a>=80){
System.out.println("你的分数评定为良");
}
else if(a<80&&a>=70){
System.out.println("你的分数评定为中");
}
else if(a<70&&a>=60){
System.out.println("你的分数评定为及格");
}
else if(a<60&&a>=0){
System.out.println("你的分数评定为差");
}
else
{
System.out.println("你的分数异常");
嵌套if结构
switch多选择结构
多选择结构还有一个方式就是switch case语句
语法:
switch(expression){
case value:
//语句
break;//可选 如果未写break会case穿透
case value:
//语句
break;//可选
//你可有任意多的case语句
default:
//语句法");
- switch语句中的表里类型可以是:
- byte,short,int或者char.
- 从java se7开始支持String 类型比较
- 同时case标签必须为字符串常量或者字面量
eg1:case穿透现象
int a=4;
System.out.println("switch循环开始-------------------------");
/*
case穿透
输出:
switch循环开始-------------------------
你输入的值为4
你输入的值为4
录入数值不合法
switch循环结束------------------------
* */
switch(a){
case 1:
System.out.println("你输入的值为1");
case 2:
System.out.println("你输入的值为2");
case 3:
System.out.println("你输入的值为3");
case 4:
System.out.println("你输入的值为4");
case 5:
System.out.println("你输入的值为5");
default:
System.out.println("录入数值不合法");
循环结构
- while循环
while(布尔表达式){
//循环内容
}
只要布尔表达式为true,循环会一直执行
大部分情况需要让循环停止,我们需要一个让表达式实习的方法来结束循环
少部分循环一直执行,比如服务器的监听
- do....循环
与while循环相似,不同的是do..while至少执行一次
语法:
do {
//语句
}while(布尔表达式);
- for 循环
for循环语句是支持迭代的一种通用结构,是最有效,最灵活的结构。for循环执行的次数是在执行前就确定的
语法:
for(初始化;布尔表达式;更新)
{
//代码语句
}
eg1:
/*
关于for循环,
最先执行初始化步骤,可以声明一种类型,单可以初始化一个或多个循环控制变量,也可以是空语句
然后检测布尔值表达式的值,如果为true,循环被执行,如果为false,循环终止。开始执行循环体后面语句
执行一次循环后,更新循环控制变量
再次检查布尔表达式,循环执行上面过程
*/
//死循环
for(;;){
}
eg2:
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 + "=" + j * i+"\t");
}
System.out.println();
}
/*
输出99乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
*/
- 增强for循环
java5引入了一种主要用于数组或集合的增强for循环
语法格式
for (声明语句:表达式)
{
//代码
}
声明语句:声明变量类型必须和数组类型匹配
表达式:表达式是要访问的数组,或者要返回值为数组的方法
eg1:
public static void main(String args[]){
int a[]={1,2,3,4,5,6};
//遍历数组元素
for (int b:a){
System.out.println(b);
}
break &continue
-
break在任何循环语句的主题补发,均可用break控制循环的流程,break用于强行退出循环,不执行循环剩余的语句(break语句也在switch中使用)。
-
continue语句在循环语句体中,用于终止某次循环过程,即t跳过循环体中尚未执行的语句,接着执行下一次是否循环的判定。
-
goto关键字
- goto仍然是java的保留字,但并未在语句中正式使用。:java没有goto等于带标签的break和continue
- 标签"标签"是指后面跟一个符号的标识符.例如label;
- 对Java来说以为用到标签的地方是循环语句前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只能终端当前循环,但若同标签使用,他们就会终中断到存在标签的地方。
** * * label标签 * 输出1-100所有质数 * 质数:只能被1合本身整除 * 自然数不是合数就是质数 * 如果一个数能被它的最小质因数整除,那它肯定是合数,及不是质数。所以判定一个数是否质数 * 只需要判断它是否能被小于开根号后的所有整数整除, * */ public static void main(String[] args) { //标签 outer:for (int a = 101; a <= 150; a++) { for (int j = 2; j < a / 2; j++) { if (a % j == 0) { continue outer; } //输出: 101 103 107 109 113 127 131 137 139 149 } System.out.print(a + "\t"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!