Day 2(流程控制以及相关循环结构)
由于上周小老弟期末考试给他考前突击几天,所以学习进度搁下了不少,接下来回归正轨继续更新。
文章目录
java流程控制
用户交互Scanner
菜鸟教程:https://www.runoob.com/java/java-scanner-class.html
注意:
1、scanner 还有很多语法,例如hasNextDouble(),表示是否输入的为数字(包括小数)
2、使用scanner类切记要先通过import java.util.Scanner引入
3、结束记得通过close关闭scanner类
4、next只有在接收到有效字符之后才会结束,所以如果一开始就未输入程序将一直等待,回车失效
代码展示:
import java.util.Scanner; //引入此java内置包来获得Scanner使用权限
public class Demo01 {
public static void main(String[] args){
// 创建一个扫描器对象,用于接收键盘数据
Scanner s = new Scanner(System.in);
System.out.println("使用next方法接收: ");
//判断用户是否输入字符串
if (s.hasNext()){
String str = s.next();
System.out.println("输入的内容为:"+ str);
}
//凡是属于IO流的类为了避免占用资源,需要将其关闭
s.close();
}
}
顺序结构
顺序结构十分简单,其实就是指的代码是从上至下一行一行一次执行的。
选择结构
重点:if多选择结构以及switch结构
If单选择结构即为简单的单if,双选择结构为if+else用来判断两种情况的不同选择
多选择结构:多个if+else if + …… + else
示例代码:
import java.util.Scanner;
public class ifDemo01 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入成绩");
Double score = s.nextDouble();
if (score == 100){
System.out.println("恭喜满分");
}else if(score <100 && score>=90){
System.out.println("优秀");
}else if(score <90 && score>=70){
System.out.println("及格");
}else if(score <70 && score>=60){
System.out.println("再接再厉");
}else if(score<60 && score>=0){
System.out.println("挂科");
}else{
System.out.println("您输入的成绩不合法");
}
s.close();
}
}
switch结构的工作原理和if多选择结构类似,其中expression表示将要进行判断的条件变量,case中的value即代表满足当前case的条件,当满足当前case的条件,则执行对应的语句,否则继续比对剩余case(若还有case)。若比对结束无可配对的case,则执行default下的语句。
示例代码:
import java.util.Scanner;
public class switchDemo02 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("猜猜我的名字");
String i = s.next();
switch (i){
case "绝世秦羽":
System.out.println("这就是我的名字,你真棒!");
break;
case "ashu":
System.out.println("猜错了");
break;
case "岑寂":
System.out.println("那是我的笔名");
break;
default:
System.out.println("好了,你连边都不沾");
}
s.close();
}
}
注意:break与default是可选项,但在每个case结尾加上break才能保证满足当前情况后只执行当前的语句,否则会出现继续执行满足的case之后的语句的情况。
补充:反编译
简单来说,就是我们所写的代码计算机并不能看懂,以java为例,在编译时,我们将java文件转换成了class计算机才能运行,class文件又称字节码文件,IDEA可以对class进行反编译,例如这里的switchDemo02.java文件
在JDK7以后,表达式结果才能支持字符串类型,通过反编译不难看出,字符的本质还是数字!
循环结构
while循环:
示例代码:
public class whileDemo01 {
public static void main(String[] args) {
//计算1+2+3+……+100
int i = 0;
int sum = 0;
while (i<=100){
sum = sum +i;
i++;
}
System.out.println(sum);
}
}
Do-while循环:
示例代码:
public class doWhileDemo01 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum = sum + i;
i++;
}while (i<=100);
System.out.println(sum);
}
}
while与do while的区别
while是先判断后执行,do while是先执行再判断。所以对于do while来说,至少会先执行一次。
for循环:
练习1:
public class forDemo01 {
public static void main(String[] args) {
//计算0到100之间奇数和偶数的和
int oddsum = 0; //奇数
int evensum = 0; //偶数
for (int i=0; i<=100; i++){
if (i%2!=0){ //判断是否为奇数
oddsum = oddsum + i;
}else{//偶数
evensum = evensum + i;
}
}
System.out.println(oddsum);
System.out.println(evensum);
}
}
练习二:
public class forDemo02 {
public static void main(String[] args) {
//用while和for循环输出1-1000之间能被5整除的数,并且每行输出3个
int i = 1;
//while
while (i<=100){
if (i%5==0){
System.out.print(i + "\t");
if (i%(5*3)==0){
System.out.println();
}
i++;
}else {
i++;
}
}
System.out.println();
System.out.println("======================");
//for
for (int j=1; j<=100; j++){
if (j%5==0){
System.out.print(j + "\t"); //print与println的区别在于println在输出时会自动换行,\t是增加空格
}
if(j%(5*3)==0){
System.out.println();
//换行也可以用System.out.print("\n")实现
}
}
}
}
练习三:
public class forDemo03 {
public static void main(String[] args){
//打印九九乘法表
for (int j=1; j<=9; j++){
for (int i=1; i<=j; i++){
System.out.print(i + "*" + j + "=" + (j*i) + "\t");
}
System.out.println();
}
}
}
增强for循环:
增强for循环将会在数组章节详细介绍,这里只做展示
break & continue
注意:
1、break在任何循环语句的主体部分,均可用break控制循环的流程
2、break用于强制退出循环,不执行循环中剩余的语句
3、continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
练习
编写三角形图案
思路:
打印正方形比较好打,所以打印三角形可通过将正方向切割成几个小的三角形,分析每一部分每一行应该有多少元素,并用for循环实现。
示例代码:
public class preactice {
public static void main(String[] args) {
for (int i=1; i<=5; i++){
for (int j=5; i<=j; 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();
}
}
}
总结
这些结构体都是最基本且贯彻编程始终的重要部分,掌握牢固后才能更好地往前走。