JAVA SE基礎(二)
Scanner物件
java.until.Scanner是 Java5 的新特徵,我們可以通過Scanner類來獲取使用者的輸入。
基本語法:
Scanner s = new Scanner(System.in);//System.in:輸入
通過Scanner類的next()與nextLine()方法獲取輸入的字串,在讀取
前我們一般需要用hastNext()與hastNextLine()判斷是否還有輸入的資料。
next()
- 一定要讀取到有效字元後才可以結束輸入。
- 對輸入有效字元之前遇到的空白,next()方法會自動將其去掉。
- 只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
- next()不能得到帶有空格的字串。
hastNext():
public static void main(String[] args) {
//建立一個掃描器物件,用於接收鍵盤資料
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接收: ");
//判斷使用者有沒有輸入字串
if (Scanner.hasNext()){
//使用next方式接收
String str = scanner.next();//程式會等待使用者輸入完畢
System.out.println("輸出的內容為:"+str);
}
//凡是屬於IO流的如果不關閉會一直佔用資源,要養成好習慣用完就關掉
scanner.close();
}
結果:輸入hello world 僅顯示 hello。
nextLine()
- 以Enter為結束符,即nextLine()方法返回的是輸入回車之前的所有字元。
- 可以獲得空白。
hastNextLine():
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收: ");
if (Scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("輸出的內容為:"+str);
}
scanner.close();
}
結果:輸入hello world 顯示 hello world。
進階使用
輸入多個數字,並求其總和與平均數,每輸入一個數字用回車確認,通過輸入非數字來結束輸入並執行結果:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//計算輸入了多少數字
int m = 0;
//通過迴圈判斷是否還有輸入,並在裡面對每一次進行求和統計
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m = m + 1;
sum = sum + x;
}
System.out.println(m + "個數的和為" + sum);
System.out.println(m + "個數的平均值是" + (sum/m));
scanner.close();
}
順序結構
JAVA的基本結構就是順序結構,除非特別指明。
語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構。
if選擇結構
if 單選擇結構
語法:if(布林表示式){//如果布林表示式為true將執行的語句
}
例題:若輸入為hello則輸出end
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入內容:");
String s = scanner.nextLine();
//equals:判斷字串是否相等
if (s.equals("hello")){
System.out.println(s);
}
System.out.println("end");
scanner.close();
}
if 雙選擇結構
語法:if(布林表示式){//如果布林表示式的值為true
} else{//如果布林表示式的值為false
}
//成績大於60為及格,小於60為不及格
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績:");
int score = scanner.nextInt();
if (score>60){
System.out.println("及格");
}
else{
System.out.println("不及格");
}
scanner.close();
if 多選擇結構
語法:if(布林表示式 1){ //如果布林表示式 1的值為ture執行程式碼
} else if(布林表示式 2){ //如果布林表示式 2的值為ture執行程式碼
} else if(布林表示式 3){ //如果布林表示式 3的值為ture執行程式碼
} else { //如果以上布林表示式都不為true執行程式碼
}
- if語句至多有一個else語句,else語句在所有的else if 語句之後;
- if語句可以有若干個else if 語句,它們必須在else語句之前;
- 一旦其中一個else if 語句檢測為ture ,其他的語句都將跳過執行。
public static void main(String[] args) {
//成績大於60分為四個等級,小於60為不及格
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績:");
int score = scanner.nextInt();
if (score==100){
System.out.println("恭喜滿分");
}else if(score<100 && score>=90){
System.out.println("A級");
}else if(score<90 && score>=80){
System.out.println("B級");
}else if(score<80 && score>=70){
System.out.println("C級");
}else if(score<70 && score>=60){
System.out.println("D級");
}else if(score<60 && score>=0){
System.out.println("不及格");
}else {
System.out.println("成績錯誤");
}
scanner.close();
}
巢狀的if結構
即可以在另一個 if 或者 else if 語句中使用 if 或者 else if 語句。
語法:if (布林表示式 1){//如果布林表示式 1 的值為ture 執行程式碼
if(布林表示式 2){//如果布林表示式 2 的值為ture 執行程式碼)
}
}
switch選擇結構
switch case語句判斷一個變數與與系列值中某個值是否相等,每個值稱為一個分支。
switch語句中的變數型別可以是:
- byte、short、int或者char
- 從Java SE 7開始,switch支援字串String型別了
- case標籤必須為字串常量或字面量
語法:
switch(expression){
case value:
//語句
break; //可選
case value :
//語句
break; //可以任意數量的case語句
default: //可選
}
例題:
public static void main(String[] args) {
//case穿透 switch匹配一個具體值
char grade = 'C';
switch (grade){
case 'A':
System.out.println("優秀");
break;//可選
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("不及格");
break;
default:
System.out.println("未知等級");
}
反編譯(IDEA)
點開IDEA專案結構(Projext Structure),找到專案輸出的路徑並開啟檔案,複製 .class檔案 到專案.java資料夾,即可點開檢視。
迴圈結構
while迴圈
語句:while(布林表示式){ //迴圈內容
}
- 只要布林表示式為true,迴圈就會一直執行下去
- 大多數情況我們會讓迴圈停止,因此我們需要一個表示式失效的方式來結束迴圈
- 少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽等
- 迴圈條件一直為true就會造成無限迴圈(死迴圈),應儘量避免
do…while迴圈
語法:do{ //程式碼語句
} while(布林表示式) ;
- 對於while語句而言,如果不滿足條件則不能進入迴圈,但有時候我們需要即使不滿足條件也至少執行一次。
- do…while迴圈和while迴圈相似,不同的是,do…while迴圈至少會執行一次。
while和do…while區別
- while先判斷後執行,do…while先執行後判斷
- do…while總是保證迴圈體至少會被執行一次
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);
}
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum = sum + i;
i++;
}while(i<=100);
System.out.println(sum);
}
for迴圈
for迴圈語句是支援迭代的一種通用結構,是最有效最靈活的迴圈結構。
語法:for(初始值;布林表示式;更新){ //程式碼語句
}
idea高校寫法:100.for 回車,快速生成
for (int i = 0; i < 100; i++) { }
例題1:
public static void main(String[] args) {
//計算0-100之間奇數和偶數的和
int oddSum = 0;
int sevenSum = 0;
for (int i = 0; i < 100; i++) {
if (i%2!=0){
oddSum += 1;
}else {
sevenSum+=1;
}
}
System.out.println("奇數和為:"+oddSum);
System.out.println("偶數和為:"+sevenSum);
}
例題2:
//1-1000之間能被5整除的數,每行輸出三個
for (int i = 1; i < 1000; i++) {
if(i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){
System.out.println();
}
例題3:
public static void main(String[] args) {
//九九乘法表
//1.先答應第一列 2.將固定的1再用一個迴圈包起來 3.去掉重複項 ,i<=j 4.調整樣式
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (j*i) + "\t");
}
System.out.println();
}
}
例題4:
public static void main(String[] args) {
//列印三角形
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; 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();
}
}
break和continue
- break在任何迴圈語句中的主體部分,均可用break控制迴圈的流程。break用於強行退出迴圈,不執行迴圈中剩餘的語句。(也可以在switch中用) (”碰到我算你倒黴我不幹啦“)
- continue語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。(”我不幹啦 但是我比較song 這次的不幹下次的繼續“)
相關文章
- Java 常用類總結(SE基礎)Java
- [Java SE] 基礎工具庫 : Apache Commons IOJavaApache
- Java網路程式設計快速上手(SE基礎)Java程式設計
- Java基礎 —— 集合(二)Java
- Java基礎之二_字串Java字串
- Java基礎知識(二)Java
- [零基礎學JAVA]Java SE應用部分-35.JAVA類集之四Java
- java基礎二:物件導向Java物件
- JAVA基礎--二維陣列Java陣列
- JAVA SE 實戰篇 C2 網路程式設計基礎Java程式設計
- Java面試題-基礎篇二Java面試題
- Java面試題基礎篇(二)Java面試題
- JAVA SE 實戰篇 C1 多執行緒程式設計基礎Java執行緒程式設計
- Java基礎系列-二進位制操作Java
- Java基礎 第二節 第三課Java
- Java基礎 第二節 第十課Java
- java基礎(二):談談Java基本資料結構Java資料結構
- Java SE, Java EE, Java MEJava
- java基礎:String — 字串常量池與intern(二)Java字串
- 大資料學習之路——java基礎(二)大資料Java
- 小饒學程式設計之JAVA SE第三部分——MySQL基礎程式設計JavaMySql
- Java基礎-語法基礎Java
- Java基礎(二)- 普通for迴圈、foreach效能比較Java
- Java併發程式設計——基礎知識(二)Java程式設計
- java基礎語法(三十九)—反射機制(二)Java反射
- java基礎之二:取整函式(Math類)Java函式
- JAVA 基礎Java
- java基礎Java
- [Java基礎]Java
- Kotlin基礎二Kotlin
- 逆向基礎(二)
- Dart基礎(二)Dart
- 基礎題二
- Java 基礎02Java程式設計基礎Java程式設計
- Java SE 22 新增特性Java
- Java SE 21 新增特性Java
- Java SE 20 新增特性Java
- Java se 複習05Java