java 流程控制篇 2021/02/26持续更新中
1. 用戶交互Scanner
1.1 簡單的Scanner用法
- 首先,需要 import java.util.Scanner
- 其次,需要創建一個 Scanner 類的對象, Scanner s = new Scanner(System.in);
- 通過調用Scanner對象的方法來完成,
- 一定要注意有開有關,最后要調用方法 close()
| boolean hasNext() | String next() | 一個用于查看是否有下一個輸入,一個用于接收,空格視為結束 |
| boolean hasNextLine() | String nextLine() | 一個用于查看是否有下一個輸入,一個用于接收,換行視為結束 |
1.2 Scanner 的進一步
- 之前Scanner 的部分僅僅是返回了 字符串 String類型,也可以進行 int, float, double 的類型,使用方法如下所示:
- 注意這個 has___這個東西是可以進行隱式轉換的,也就是說double 可以接受 int。
- 而且注意,has這個僅是判斷,并不接受內容,只有next,他的光標才會往后移動
- 而且也不能超出范圍,否則has__是會返回false 的
| hasNextInt() | nextInt() | 整數int |
| hasNextLong() | nextLong() | 整數long |
| hasNextFloat() | nextFloat() | 浮點數float |
| hasNextDouble() | nextDouble() | 浮點數double |
求輸入整數數字的和以及平均值
package com.luckylight.package3;import java.util.Scanner;public class demo2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = 0;double sum = 0.0;while (scanner.hasNextLong()){long tmp;n ++;tmp = scanner.nextLong();sum += tmp;System.out.println("當前你輸入的數據是=" + tmp + ", 當前的tmp和為" + sum);}System.out.println("最終的總和為" + sum +", 平均值為 " + sum / n);scanner.close();} }1.3 print 與 printLine()
都是java 輸出語句
System.out.print(), System.out.printLine()
一個是輸出完不換行,print, 一個是輸出完會換行, println
2. 順序結構 & 選擇結構 & 循環結構
2.1 順序結構
直接就是順序執行,沒啥好說的,最基礎的程序執行結構,在這里補充一個 小常識。
==與equals的區別
"=="操作符的作用
1、用于基本數據類型的比較
2、判斷引用是否指向堆內存的同一塊地址。
equals的作用:
用于判斷兩個變量是否是對同一個對象的引用,即堆中的內容是否相同,返回值為布爾類型
用法:boolean b = obj1.equals(obj2);
== 與 equals 的區別
String作為一個對象來使用,查看他們的區別。
eg1: 對象不同,內容相同
String s1 = new String("java"); String s2 = new String("java");System.out.println(s1==s2); //false System.out.println(s1.equals(s2)); //trueeg2:同一對象,"=="和equals結果相同
String s1 = new String("java"); String s2 = s1;System.out.println(s1==s2); //true System.out.println(s1.equals(s2)); //trueString作為一個基本類型來使用
如果值不相同,對象就不相同,所以"==" 和equals結果一樣
String s1 = "java"; String s2 = "java";System.out.println(s1==s2); //true System.out.println(s1.equals(s2)); //true綜上所述,還是使用equals判斷穩妥!!!
2.2 選擇結構
2.2.1 if 類型
if (condition) —
if (condition) — else —
if (condition1) — else if (conditon2) ------- else —
if 還可以進行嵌套
2.2.2 switch 類型
- 具體的類型如下示例所示
- 其中的 break, default 都是可選的,一定要注意 有無的區別
- expression 變量可以使 byte, short, int , 或者是char
- 從 Java SE 7 開始, switch 就可以支持 String 類型了。
- case 后面必須跟的是常量表達式,不可以是變量
下面我們寫一個switch文件試一試 String 類型,然后介紹IDEA的反編譯
加入后顯示如下(倘若加入后還沒有,直接 右鍵 reload from disk 該文件夾即可)
2.3 循環結構
2.3.1 while, do~while, for
**while, do – while, for **
while (booleanExpression) {// 循環體}do {// 循環體} while (booleanExpression);for (初始化; booleanExpression; 更新迭代) {// 循環體}練習一個打印九九乘法表格
注意這個是雙引號,不是單引號
for 版本
for (int i = 1; i <= 9; i ++ ) {for (int j = 1; j <= i; j ++ ) {System.out.printf("%-2d*%2d = %2d,\t", j, i, i * j);}System.out.println();}// 這個是雙引號for (int i = 1; i <= 9; i ++ ) {for (int j = 1; j <= i; j ++ ) {System.out.print(j+"*"+i+"="+(i*j)+"\t");}System.out.println();}while 版本
int i = 1, j = 1;while (i <= 9) {j = 1;while (j <= i) {System.out.printf("%d * %d = %2d,\t", j, i, i * j);j ++;}i ++;System.out.println();}2.3.2 增強的for循環
- Java5引入的一種用于數組或者是集合的增強型for循環, 這個東西好像和 c ++ 那個一樣 for (auto x : v){} // 遍歷vector數組
測試樣例
int[] numbers = {10, 20, 30, 35};for (int x : numbers)System.out.println(x);3. Break & Continue
不帶標簽的 label 和 continue 是和 c ++ 一模一樣的
帶標簽的 label 和 continue 奇奇怪怪,不建議使用。
public class MultTable {public static void main(String[] args) {label1 : for (int i = 1; i <= 20; i ++ ) {if ((i & 1) == 1) {// continue label1;break label1;}System.out.println(i);}} }4. 練習&debug
打印一個三角形
package com.luckylight.package3;/*** @author LuckyLight* @since 8.0* @*/ public class MultTable {public static void main(String[] args) {// 打印一個 n 行的三角形int n = 5;int sumLine = n * 2 - 1;System.out.println(n);System.out.println(sumLine);for (int i = 1; i <= n; i ++ ) {int curCnt = i * 2 - 1;int left = (sumLine - curCnt) / 2;for (int j = 1; j <= sumLine; j ++ ) {if (j <= left || j >= sumLine - left + 1 ) {System.out.print(' ');} else {System.out.print('*');}}System.out.println();}} }IDEA 的debug功能超級好用,建議多多嘗試
總結
以上是生活随笔為你收集整理的java 流程控制篇 2021/02/26持续更新中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SparkStreaming基础
- 下一篇: Spark2.x RPC解析