java逻辑或,使用java理解程序逻辑
00-1010 I、块作用域II、序列结构III、分支结构switch语句问题(要点)IV、循环4.1、易错点4.2、break语句4.3、continue语句5、输入输出5.1、输出到控制台5.2、从键盘输入5.3、循环输入6、猜数字游戏。
00-1010首先,在深入研究控制结构之前,你需要了解block的概念。
块:复合语句是指几个简单的Java语句,用一对大括号括起来。块确定变量的范围。一个块可以嵌套在另一个块中。
public class test demo 220425 { public static void main(String[]args){ int n=10;{ int k=20int n=20}}}在这段代码中,我们的主函数中带括号的部分是块。一个块可以嵌套在另一个块中,但是注意在Java中,不能在嵌套的块中声明同名的变量。比如上面代码内部块中int n=20的做法就是错误的。这里需要区分的是,当C/C中存在全局变量时,会先使用同名的局部变量,全局变量会被阻塞。这在Java中是不允许的(Java没有全局变量的概念,所以这里只是打个比方)。
00-1010序列结构比较简单,按照写代码的顺序逐行执行。
插图:
00-1010插图:
注意:if /else if是平行关系,不像if else是非此即彼关系。这种结构称为多分支。
关于分支结构的几点注意事项:
1.if括号中的表达式只能是布尔表达式。只有0才是真的,0才是假的。
2.Java的代码风格。我们推荐行尾风格。
3、悬空else问题,也就是说if/else语句要加括号,这样代码可读性更强。如果不是,当有多个if/else语句时,else必须匹配最近的else。
public class Tese demo 220424 { public static void main(String[]args){ int x=10;int y=10if(x==10)if(y==10)system . out . println( AAA );Else //这个Else实际匹配if(y==10)system . out . println( BBB );}}
目录
公共类Tese demo 220424 { public static void main(String[]args){ int a=3;switch(a){ default 3360 system . out . println(输入错误!);打破;案例1: system . out . println(1);打破;案例2: system . out . println(2);打破;}}}注意:
1.不管默认位置在哪里,只要没有匹配到任何大小写,就直接取默认。
2.每个case语句和default语句后面的break语句都不能省略,否则将通过。除非是在特定情况下,断不能掉。
3.switch结构中的关键字只有case、break和continue,在循环中使用。这里是分支结构,不要混淆。
4.switch括号中的数据类型只能是byte、short、int、char、String、enum,然后是case匹配switch后的常量。(注意不能长,因为整形总会转向int,但是长转向int会有精度损失)。
5.案例背后的常量值不能重复,每个案例代表不同的情况。
6.你可以把桌子放在开关的支架上。
达式,但是不能像if语句一样,可以放一些较为复杂的表达式。
7,switch语句可以嵌套,但是不好看。
四,循环
三大循环:while循环,for循环,do while循环(循环具体的基本定义就不做介绍了,这里只是点一些要注意的点)
4.1,易错点
1,循环的几个部分,循环变量的定义,条件判断,循环体,循环变量的迭代。一定要注意循环变量的迭代,如果说一个循环变量没有迭代直至向着跳出循环的方向进行的话,那么就可能造成死循环了。
2,不要在循环内部对循环变量做手脚,即使你需要使用你的循环变量,用一个临时的变量来接收它的值,然后再去使用。
3,轻易不要将浮点数作为循环变量。
public class TestDemo220425 { public static void main(String[] args) { for(double x = 0;x != 10;x += 0.1){ System.out.println("haha"); } }}
不出意外的,这段代码死循环了,也就是我说的将浮点数作为循环变量。因为0.1在存储的时候,小数部分是无法用二进制准确表示的,所以我们每次加的都是一个近似值,那么这里可能刚好加了之后可能刚好跳过了10,所以循环就一直进行了下去。
4.2,break语句
public class TeseDemo220424 { public static void main(String[] args) { int i = 1; while(i <= 10){ if(i == 2){ break; } System.out.println("hehe"); i++; } }}
程序运行截图:
break语句的作用是跳出它所在的循环,比如上面当i == 2的时候,就会跳出while循环,所以只会输出一个hehe。
break的扩展用法:
在Java中,是没有goto语句的,但是因为设计者认为goto语句思想还是没有问题的在某些特定的条件下,确实可以起到很好的跳出循环的效果,所以在Java里面就发明了**带标签的break语句,作用是可以达到break到标签所指定的循环的外部。 (标签只要是合法的标识符即可)**
示例:
public class TestDemo220425 { public static void main(String[] args) { label1: while(true){ for(int i = 0;i < 10;i++){ if(i == 3){ break label1; } System.out.println(i); } } System.out.println("已跳出循环!"); }}
程序运行截图:
可以看到,到我们利用标签后,可以指定跳出到哪里。如果这里只是用break,不用标签的话,那么break就只会跳出里层的for循环,外面的while还是一个死循环,用了标签之后,当i== 3,就可以直接跳出到while循环的外部。
4.3,continue语句
public class TeseDemo220424 { public static void main(String[] args) { int i = 1; while(i <= 10){ if(i == 2){ continue; } System.out.println("hehe"); i++; } }}
程序运行截图:
continue语句的作用是结束本轮循环而开始下一次的循环,如上题,当i == 2,所以就会直接跳过后面的语句,也就是i++不会执行了,导致i一直等于2,所以陷入了死循环。当然如果你这里用for循环就不会这样了,因为i++的执行顺序在前面,continue影响不到
continue扩展用法:
同样的,在continue里面,也是可以使用标签的,可以指定跳到与标签匹配的循环的首部。
示例:
public class TestDemo220425 { public static void main(String[] args) { label1: for(int i = 0;i < 10;i++){ if(i == 3){ continue label1; } System.out.println(i); }}
程序运行截图:
五,输入输出
5.1,输出到控制台
利用%结合上面的转换符就可以进行格式化的输出,当然在进行格式化输出的时候,也可以运用一些标志,比如输出的时候带前缀,带正负号等等…
5.2,从键盘输入
public class TeseDemo220424 { public static void main(String[] args) { Scanner myscanner = new Scanner(System.in); System.out.println("请输入年龄"); int num = myscanner.nextInt(); System.out.println(num); System.out.println("请输入名字"); String str = myscanner.nextLine();//读入一行 System.out.println(str); System.out.println("请输入专业"); String str1 = myscanner.next(); System.out.println(str1);//读入一个字符串,遇到空格停止 }}
这里就是要注意你的输入与你接收的方法要对应,另外就是当你用了nextLine()来接收一行的时候,要注意它前面有不有用输入的方法,因为你的换行会被当成一行读入到nextLine()里面,这里就类似于C语言里面吃掉缓冲区里面的回车是一个道理。
程序运行截图:
扩展,在用键盘进行输入的时候,我们是能够看到我们自己的输入的,但是在某些情况下,比如输入密码,我们一般是不想让人看到的,所以这里可以运用到Console类。(这里只做简要介绍)
Console类:访问与当前Java虚拟机关联的基于字符的控制台设备(如果有的话)的方法,也即使从控制台接收输入的方法。
使用示例:
import java.io.Console;public class TestDemo220425 { public static void main(String[] args) { Console cons = System.console(); String username = cons.readLine("User name: "); char[] passwd = cons.readPassword("Password:"); }}
在IDEA下的运行截图:
❌???怎么直接报空指针异常了,寻思着这里也没用到指针吧,感到十分的不解…
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。