Java基础入门_03day
Java基础入门_03day —— 数学计算引发出来的种种(一)
-
引言
我不会告诉你今天的内容是:【运算符、循环与分支语句的简单运用】
你TM的不是讲了嘛?
啊,这。。。忘掉它,好吧!
对了,今天我们开始使用【VS Code】了!
这是教程:https://blog.csdn.net/qq_46350922/article/details/138036414
-
数学计算(一)
让我们来实现一个简单的【加法计算器】吧。
场景需求:用户会在那个难看的黑色框框里分别输入两个整数,求【两数之和】=> 第一次输入后,敲回车,输入第二个数,然后敲回车出结果。
好吧,我现在无法完成,我连怎么在【黑框框里输入内容】都不知道怎么做!
没事,看我的:
▼java复制代码import java.util.Scanner; public class Test { public static void main(String[] args) { // 小师妹,现在你不需要理解这行代码,抄就完事儿了 Scanner sc = new Scanner(System.in); // 在控制台上输出双引号中的内容 System.out.println("请输入一个整数:"); // 拿到当前控制台上输入的数字 ---- 不要管,抄就完事儿 int num = sc.nextInt(); // 在控制台上输出变量【num】的值 System.out.println(num); } }哇偶,真的可以诶,可是我们要拿两次诶!
那就再拿一次嘛:
▼java复制代码import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入第一个数字:"); int a = scanner.nextInt(); System.out.println("请输入第二个数字:"); int b = scanner.nextInt(); int result = a + b; System.out.println("结果是:"+result); scanner.close(); } }哇偶,真酷啊!等一下,这个【 scanner.close();】是干嘛的嘞?
这个嘛,我要怎么解释呢?哦呜,有了!这个【scanner】变量是不是可以获取用户输入的内容啊,那它是不是要与【控制台】建立联系呢,当我们在控制台中输入内容的时候,我们的Java程序可以知道并获取。当我们不想从控制台上获取内容了呢?断开联系嘛,和它“绝交”。
嗯呐,那这个【"结果是:"+result】又是什么意思呢?
我们观察结果嘛,控制台中是不是输出了【结果是:<变量result的值>】。
对哈,变量【result】的值跑到这个双引号里面去了!师妹我觉得这个“计算器”不够完美,每次计算完都需要重新再run一次,这怎么解决呢?
请看下面的代码:
▼java复制代码import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请输入第一个数字:"); int a = scanner.nextInt(); System.out.println("请输入第二个数字:"); int b = scanner.nextInt(); int result = a + b; System.out.println("结果是:" + result); } } }我靠,这么帅,你不要命啦!所以,你不打算解释一下【 while(true){} 】是干嘛的吗?
看来小师妹对知识的渴望,远大于对师兄的夸赞啊,哎!下面的例子应该能比较清晰的知道这个语法的作用:
▼java复制代码public class Test { public static void main(String[] args) { int i = 0; while(true){ i = i + 1; System.out.println(i); } } }哇偶,一瞬间输出了这么多数字!我发现了一个规律:这些数字都是递增的嘞!每次打印的数字都是在前一个数字的基础上+1!我真的是一个天才!
对的,发现什么了嘛,【i = i + 1;System.out.println(i);】这段代码在不停的执行,准确的说是【while(true){这个大括号里面的代码在不停的执行}】。
哦呜,以后我想不停的执行代码,就使用【while(true){}】。但是,师兄,我有一个想法,我只想输出【1~10】诶!
这个好说,看如下代码:
▼java复制代码public class Test { public static void main(String[] args) { int i = 0; while(i < 10){ i = i + 1; System.out.println(i); } } }哇塞,厉害哟!好了,现在夸完你了,是不是得详细给我解释一下代码的作用?
嗯呐:
▼java复制代码public class Test { public static void main(String[] args) { // 定义一个变量【i】,将0赋值给它 int i = 0; // 开启一个循环,会不断的执行循环体中的代码,直到括号里面的条件为【false】时,就不执行了 while(i < 10){ // 赋值语句我们得从右往左看 => 将原来【i】的值【+1】后再赋值给【i】 i = i + 1; // 控制台上输出【i】的值 System.out.println(i); } } }师兄啊,抛开其他的不说,【i = i + 1;】我无法理解啊,感觉怪怪的,似乎是理解了,呜呜呜!
Let me show!
CPU得到了一个指令,【给一个数字+1】,然后呢?CPU总得知道要将结果放在哪里吧?变量【i】在内存中的哪块区域肯定是放在哪里啦。于是乎这个过程就是:CPU拿到内存中变量【i】的值,进行【+1】计算后,将结果给到内存,并给内存说,你要将这个结果刷新在变量【i】的空间里面哦!
原来是这样的啊,每次的【+1】操作这两哥们儿配合得不亦乐乎哦,真是暧昧啊!
啊,这!?确实挺“暧昧”的哈。
师妹
我啊还有一个问题,就是,“直到括号里面的条件为【false】时,就不执行了”,这是什么意思嘞?哪里来的【false】?用大白话来描述这段代码,就是:【i】的值小于【10】嘛?小于就执行循环体(while后面大括号里的代码片段);不小于(大于等于)就终止循环(循环体中的代码片段不执行了)。每一次循环都要判断【i是否小于10?】,这个问题的结果无非就两个嘛,“是”或者“不是”,。这是人类的语言嘛,Java中用【true】和【false】代表“是”和“不是”。
可是,我知道【true】和【false】,但是我的代码里面并没有显式的去写【true】或者【false】啊?
是的,我们很少直接写这两个值,而是通过一些运算去得到这两个值!
哦呜,师妹我懂了!【while】后面那个小括号里面其实只能装【true】或者【false】,如果是【true】呢,就执行循环体;如果是【false】呢就不执行。所以,【 while(true){} 】能一直不停的执行循环体里面的代码。类似于【i < 10】这样的式子,它的结果是一个布尔值,所以能够在装在while后面的小括号里!
聪明!不愧是我的小师妹,和我一样是个天才!(内心:桀桀桀!)这里师哥给你总结一下:任何涉及到比较的语句,它的结果都是布尔值。
我懂了,看师妹表演:
▼java复制代码public class Test { public static void main(String[] args) { int i = 0; while(i = 0){ System.out.println("现在i的值是0哦!"); i = i + 1; } System.out.println("现在i的值不是0了!"); } }可恶啊,师兄,这破代码报错了!!!
啊,这!?师妹果然是百年难得一遇的【编程奇才】!师兄知道你想的是:当i的值等于0时,执行循环体中的代码。可是,师妹啊,一个“=”号表示赋值哦,要两个“=”号才表示【相等比较】哦!
▼java复制代码public class Test { public static void main(String[] args) { int i = 0; while(i == 0){ System.out.println("现在i的值是0哦!"); i = i + 1; } System.out.println("现在i的值不是0了!"); } }原来如此!那【不等于】怎么表示嘞?
看这里,
▼java复制代码public class Test { public static void main(String[] args) { int i = 1; while(i != 0){ System.out.println("现在i的值不是0哦!"); i = i - 1; } System.out.println("现在i的值是0了!"); } }【!】这个符号还可以用来【取反】(true变false,false变true):
▼java复制代码public class Test { public static void main(String[] args) { boolean bool = true; boolean bool_ = !bool; System.out.println(bool_); } }Java代码果然博大精深啊,师兄这些都知道,真厉害!
啊,对对对!师兄是谁嘛,那可是,上天入地 。。。。
对了,师兄,那个【简易加法计算器】怎么停不下来啊?我想的是我输入特定的数字,比如第一次输入【520】它就停下来了,怎么弄嘞?
哦呜,好说!(内心:这小妮子这是对我告白啦?):
▼java复制代码import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请输入第一个数字:"); int a = scanner.nextInt(); // 当【a】的值等于【520】时,执行【if】后面大括号里面的语句 if(a == 520){ // 【break】的作用就是结束【最近一层】的循环 break; } System.out.println("请输入第二个数字:"); int b = scanner.nextInt(); int result = a + b; System.out.println("结果是:" + result); } scanner.close(); System.out.println("退出计算器"); } }哇哦无!真的停下了诶!这个我理解:【if】中文翻译过来就是【如果】嘛,就是“如果a的值等于520,就执行后面大括号中的语句”。如果师妹我猜得没有错的话,【if】和【while】其实是差不多的,都要先判断【()】里面的值,如果是【true】的话就执行大括号里面的代码;如果是【false】的话就不执行。它们的区别就是:【if】只会执行一次;【while】会一直执行,直到【()】里面的值是【false】为止!
我靠,师妹崛起了!?
嘻嘻,但是那个 “结束【最近一层】的循环”我没有看懂诶!
哈哈,因为循环可以嵌套啊:
▼java复制代码import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(true){ System.out.println("输入整数【1】为kavien打call!"); // -- while(true){ int i = scanner.nextInt(); if(i == 1) { break; }else{ System.out.println("不输入数字【1】你是你逃不掉的!"); } } // -- System.out.println("感谢你为kaiven大call!"); } } }你会发现尽管你输入了【1】,但是这个程序一直在运行,为什么呢?原因就是【break】这玩意儿只会终止掉最近一层的循环哦,外面还有一次层嘛,所以这个程序会永不停歇!
我还发现了这个【else】了,当【i】的值不是【1】的时候,就会执行里面的代码片段。所以,这个**【else】是和【if】打配合的,if判断为【true】的时候,就会走if后面的大括号;if判断为【false】的时候,就会走【else】后面的大括号!**
孺子可教也!今天的修行暂时告一段落吧!师妹,每天见!
好诶,尸兄!
啊!?
今日必会:
▼text复制代码1. 获取控制台中输入的数字 2. 【while】【if】语句的简单使用
笔者寄语:
“长风破浪会有时,直挂云帆济沧海。”加油吧!
