java -1%3_Java_SE 流程控制
Java流程控制學習
學習目錄
1.用戶交互Scanner
2.順序結構
3.選擇結構
4.循環結構
5.break & continue
6.練習
Scanner對象
1.java.util(util=工具包).Scanner是java5的新特征,我們可以通過Scanner類來獲取用戶的輸入;
2.基本語法
Scanner s = new Scanner(System.in);
3.通過Scanner類的next()與nextLine()方法獲取輸入的字符串,
在讀取前,我們一般需要使用 hasNext() 與 hsaNextLine() 判斷是否還有輸入的數據;
4.基本使用方法
//創建一個掃描器對象,用于接收鍵盤數據
Scanner scanner= new Scanner(System.in);
//判斷有沒有字符串數據輸入;
if(scanner.hasNext()){
//使用Next()方法接收
String str = scanner.next();
System.out.println("輸入的內容為:"+str);
}
//使用完Scanner之后,進行Scanner關閉,進行資源回收;
scanner.close();
//------------
//nextLine()
Scanner scanner= new Scanner(System.in);
//判斷有沒有字符串數據輸入;
if(scanner.hasNext()){
//使用NextLine()方法接收
String str = scanner.nextLine();
System.out.println("輸入的內容為:"+str);
}
//使用完Scanner之后,進行Scanner關閉,進行資源回收;
scanner.close();
//------------
注意1:屬于IO流的類,如果創建之后,不進行關閉,那么會一直占用資源;
IO流:可以與用戶進行交互的類統稱為IO流;
//------------
next()
1.一定要讀取到有效字符后才可以結束輸入;
2.對輸入有效字符之前遇到的空白,next()方法會自動將其去掉;
3.只有輸入有效字符后,才將其后面輸入的空白作為分隔符或者結束符;
4.next() 不能得到帶有空格的字符串;
//------------
nextLine();//常用
1.以Enter為結束符,也就是說 nextLine()方法返回的是,輸入回車之前的所有字符;
2.可以獲得空白;
//------------
hasNextInt();//判斷是否輸入整數;
nextInt();//獲取輸入整數;
//------------
hasNextFloat();//判斷是否輸入小數數據;
nextFloat();//獲取輸入小數數據;
//------------
1.可以使用Ctrl+鼠標左鍵在IDEA中點擊Scanner類,進入查看其中各種方法;
可以通過側邊欄左邊的結構進行查看其中Scanner類的各種方法;
作業:
/*可以輸入多個數字,并求其總和與平均數,每輸入一個數字,使用回車進行確認,通過輸入非數字來結束輸入并輸出執行結果;*/
//隨機創建一個類:
public class Demo01{
//創建main()方法
public static void main(String[] args){
//創建Scanner對象,使用System.in,說明進行的是輸入操作;
Scanner sc = new Scanner(System.in);
//創建double型變量接收和值;
double sum=0;
//創建int型變量計次;
int i=0;
//提示輸入數字;
System.out.println("請輸入數值"+(i+1)+":");
//使用判斷循環首while
while(sc.hasNextDouble()){
//是否應創建一個if語句用以判斷是否輸入的是數值?
//不用,使用hasNextDouble,就是理解的意思了.
//若不使用看一下,不可以不使用循環,條件不成立;
//創建用于接收鍵盤輸入數字變量,類型double
double num=sc.nextDouble();
//計算和值;
sum=sum+num;
//計次
i++;
//提示輸入數字;
System.out.println("請輸入數值"+(i+1)+":");
}
//循環結束后,和值確認,求平均數值
//創建平均數變量.count?
double count = sum/i;
//輸出相應計算結果;
System.out.println("輸入的個數有多少個:"+i);
System.out.println("輸入的數值和值為:"+sum);
System.out.println("輸入的數值平均數為:"+count);
//關閉Scanner對象
sc.close();
}
}
//作業已完成;
scanner.equals("AAA"); equals方法.判斷字符串是否相同;
基本結構
順序結構(struct)
1.java的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行下去;
2.順序結構是/*最簡單的算法結構*/
3.語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成的;
/*他是任何一個算法都離不開的一種基本算法結構*/
選擇結構
1.if單選擇結構
很多時候,需要判斷一個東西是否可行,那么就需要用到if語句.
如:成績是否及格;
2.if雙選擇結構
一個事物,不是只有一種結果,成功了就怎么做,而失敗了,又怎么做;那么就需要用到else語句
如成績:60分以上為及格,60分以下為不及格;
3.if多選擇結構
一個事物,不是只有兩種結果,那么就需要用到else if + else 語句疊加使用;
如成績:100-90區間為A,90-80區間為B;80-60為C;60以下為D;
4.嵌套的if結構
在判斷的時候,如果需要確認其結果等于在一個范圍,并逐步縮小甚至直接判斷是否正確;
//快速找到一個數在其規定范圍的方法
//取中判斷思想,在100個數中查找,將其與50判斷,若大于,則為50-100區間,否則為1-50區間
//此操作一下減少一半范圍,之后可以繼續在想要的范圍進行取中值判斷,從而達到快速查找的效果;
if(A<=50 && A>0){
//前提條件,需要小于等于50且不為負數,但小于等于50之后,還需要分成兩批;
//50-30為A類,30-0為B類;
//A是否小于50,是則進入此處,再次判斷
if(A<=50 && A >= 30){
//判斷A是否小于等于50,大于30;
//進入這里,說明是符合條件的A類;
System.out.println("A類數值:"+A);
}//否則,則為B類數值;
else{
//因為已經小于50,在沒有負數的情況下,只有0-30這一區間了;
//所以相應皆為B類數值,也就不需要使用else if語句再次判斷;
System.out.println("B類數值:"+B);
}
}
//注意事項:
1.if語句至多有1個else語句.else語句應寫在在所有的else if語句之后;
2.if語句可以有若干個else if語句,它們必須在else語句之前;
3.一旦其中一個if語句判斷為true,則其他所有的else if 和 else語句皆將被跳過執行判斷;
4.所有的流程控制語句,皆可以相互嵌套,而互不影響;
//-------------------
5.switch多選擇結構
1.多選擇結構還有一個實現方式就是switch case語句;
2.switch case語句用來匹配一個變量與一系列值中某個值是否相等,每個值稱為一個分支;
3.switch語句中的變量類型可以是
byte.short.int或者char
4.從java SE7開始 switch支持字符串String類型了;
5.同時case標簽必須為字符常量或字面量;
6.在switch語句中,可以創建多個case分支,但只能有一個默認default語句分支;
7.case分支語句塊中,必須帶有break(跳出循環)語句,不然會穿透執行;
基本語法:
switch (表達式){
case (字符常量或字面量):
break;
case "String":
break;
default :
//default,默認方法,不用進行判斷.反正各種判斷都沒有,就會執行default方法;
//default方法,可寫,可不寫;
//在不寫的情況下,必須保證case值可以匹配到相應的值,否則會發生case穿透;
}
循環結構
do...while //循環判斷首
for循環//計次循環首
1.在java5中引入了一種主要用于數組的增強型for循環;
/*-------------------------*/
while循環//判斷循環首
1.最基本的循環結構
2.只要布爾表達式為true,循環則會一直循環;
3./*我們大多數情況是會讓循環停止下來的,我們需要一個讓表達式失效的方式來結束循環;*/
4.循環條件一直為true就會造成無限循環(死循環),我們正常的業務編程中應盡量避免死循環.會影響程序性能或者造成程序卡死崩潰;
思考:1+2+3..+100=?
int sum=1;
inti=2;
while(i<=100){
sum=sum+i;
i=i+1;
}
/*-------------------------*/
do...while循環
1.對于while語句而言,如果不滿足條件,咋不能進入循環.但有時候我們需要即使不滿足條件,也至少執行一次;
2.do...while循環和while循環相似,不同的是,哪怕條件不滿足,do...while也會執行至少一次;
3.while循環和do...while的區別
while循環是先判斷,再執行,而do...while循環是先循環,再判斷;
do...while總是保證循環體會被至少執行一次;這是他們的主要差別
/*-------------------------*/
for循環
1.雖然所有循環結構都可以使用while或者do...while表示,但java提供了另一種語句--for循環,
使一些循環結構變得更加簡單;
2.for循環語句時支持迭代的一種通用結構,是最有效,最靈活的循環結構;
3.for循環執行的次數是在執行前就確定的;
練習1:計算0-100之間的奇數和偶數的和;
練習2:用while或for循環輸出1-1000之間能被5整除的數,并且每行輸出3個;
練習3:打印九九乘法表;
練習1:
//創建for循環體
//創建一個變量來接收奇數的和;
int num1=0;
//創建一個變量來接收偶數的和;
int num2=0;
for (int i = 0; i <= 100; i++) {
//判斷是否為偶數
if (i % 2 == 0) {
//求余%2等于0的數,得到的是偶數;
num2 = num2 + i;
} else {
//否則則為奇數;
num1 = num1 + i;
}
}
System.out.println("奇數之和:"+num1+" 偶數之和:"+num2);
//練習1完成
//------------------
//練習2:
//好像只能創建一個數組,才能方便一些做這道題;
//并且需要使用arrayList;這個我好像不太懂用了;
//也可以使用三個變量用來保存;輸出之后再進行覆蓋,雖然很傻...
int num1=0;
int num2=0;
int num3=0;
int i1=0;
for(int i=1;i<=1000;i++){
if(i%5==0){
i1++;
//得到的皆為可以被5整除的數;
//每行輸出三個...
//再創建一個計數變量...3次循環;
if(i1%3==1){
num1=i;
}else if(i1%3==2){
num2=i;
}else if(i1%3==0){
num3=i;
//輸出結果,不然等下就會漏掉了;
System.out.println("第一個:"+num1+" 第二個:"+num2+" 第三個:"+num3);
}
}
}
}
}
//勉強完成;練習2
練習2:重置
for(int i=1;i<=1000;i++){
if(i%5==0){
//輸出不換行,顯示滿3個,之后再換行;
System.out.print(i+"\t");
}
if(i%15==0){
//換行方法1;
System.out.println();
//換行方法2;
System.out.print("\n");
}
}
//------------------
練習3:
//九九乘法表一共九層;
//需要至少兩個變量;循環好像需要嵌套,好弄一些;
//沒那么簡單額;原來剛才寫錯了,第二個for循環的i1沒整好;
//現在可以是可以,但不美觀;
//勉勉強強,弄美觀一點;現在勉強還行,加了逢9換行;
//需要去掉一些重復的;//未完
for(int i=1;i<=9;i++){
for(int i1=1;i1<=9;i1++){
//好像直接輸出都可以了
System.out.print(i+"*"+i1+"="+i*i1+" ");
if(i1==9){
System.out.println();
}
}
}
//好像完成了勉勉強強;練習3;
練習3:重置
//按橫行思考,每次內循環小于外循環,則每次減少輸出一個;
//由上而下
//第一次,外1,內1
//第二次,外2,內2
//第九次,外9,內9
//由網友提供思路...
//由列思考,不好思考,換成按行思考,好解決;
for (int i = 1; i <= 9; i++) {
//將內計次小于外計次即可刪除重復
for (int i1 = 1; i1 <= i; i1++) {
//好像直接輸出都可以了,加上\t,使其排列整齊;
System.out.print(i + "*" + i1 + "=" + i * i1 + "\t");
}
//每次到外面就進行換行
System.out.println();
}
//------------------
//迭代:每次調用這個值的時候進行刷新;
A+=1;//迭代
i++;//迭代
//------------------
/*for循環*/
1.最先執行初始化步驟,可以聲明一種類型,可以初始化一個或者多個循環控制變量;也可以是空語句;
2.然后檢查boolean表達式;如果為true,進入循環體執行,如果為false,跳過循環體不執行,順序執行for循環后面的語句;
3.執行一次循環后,更新循環控制變量(迭代因子控制循環變量的增減);
4.再次檢查boolean表達式;重復上述步驟;
//------------------
增強型for循環
1.java5引入了一種主要用于數組或集合的增強型for循環.
2.java增強for循環語法格式如下:
for(聲明語句 : 表達式){
//代碼句子
}
3.聲明語句:聲明新的局部變量,該變量的類型必須和數組元素的類型匹配;
其作用域限定在循環語句塊,其值與此時數組元素的值相等;
4.表達式:表達式是要訪問的數組名,或者是返回值為數組的方法;
代碼示例:
int[] numbers={10,20,30,40};
for(int x:numbers){
//numbers數組里面的值,皆賦值給了X;
System.out.println(x);
}
//數組是一種數據結構;
break && continue
break:
1.break在任何循環語句的主題部分,均可用break控制循環的流程.
2.break用于/*強行退出循環*/,不執行循環中剩余的語句(break語句也在switch語句中使用);
//-----------
continue:
1.continue語句用在循環語句體中,用于/*終止某次循環過程*/,即跳過循環體中尚未執行的語句,接著進行下一次是否執行循環的判定;
//-----------
關于goto關鍵字:
1.goto關鍵字很早就在程序設計語言中出現,盡管goto仍是java的一個保留字,但并未在語言中得到正式使用;
2.java沒有goto,然而,在break和continue這兩個關鍵字的身上,
我們仍然能看出一些goto的影子---帶標簽的break和continue
3."標簽"是指后面跟一個冒號的標識符,例如: label:
4.對java來說唯一用到標簽的地方實在循環語句之前,而在循環之前設置標簽的唯一理由是:我們希望在其中嵌套另一個循環,由于break和continue關鍵字通暢只中斷當前循環,但若隨同標簽使用,它們就會中斷到存在標簽的地方;
label代碼示例:
//打印101-150之間所有的質數;
//質數是指在大于1的自然數中,除了1和它本身以外不再有其他因素的自然數;
//標簽形式(不建議使用)
int count = 0;
outer:for(int i=101;i<150;i++){
for(int j=2;j
//將i/2得到1/2的i,將j自增到一半,求余,皆不可被整除;
//則其為質數;
if(i % j==0){
//跳轉回label標簽處;
continue outer;
}
System.out.println(i+" ");
}
}
//-----------
流程控制練習:
//打印三角形5行
代碼示例:
//將三角形拆分打印輸出
//先打印左上角空格;再打印左半部分三角形;
for(int i=1;i<=5;i++){
//由行思考,第一行輸出5個空格;
//第二行輸出4個,第三行輸出3;第五行輸出1;
//之后再在第一行輸出一個*號;第二行輸出2個,第五行輸出5個;
for(int j=5;j>=i;j--){
System.out.print(" ");//不進行換行操作;交由后面
}
//已測試可以輸出倒三角空格,則再建立一個for循環
//在去第一行打印出5個空格時,換行之前;添加左半部分三角形;
//第一次輸出一個星號,這個是正序三角形;
for(int j=1; j<=i ;j++){
System.out.print("*");//不進行換行操作;交由后面
}
//好像再復制多一份上方for循環打印*號即可;
//這樣的話,最上方,還缺一點*號,不是太好看,不過也算三角形
//中間的條件判斷不是j<=i,而是j
//因為原來設置j<=i,j=1,i=1,那么第一行也會輸出,就會造成第一行兩個星號;
//設置j
for(int j=1; j
System.out.print("*");//不進行換行操作;交由后面
}
//換行
System.out.println();
}
反編譯
java--->class(字節碼文件)--->(反編譯)java(Idea);
將需要反編譯的class文件,存放至java后綴文件包下,再從idea中打開即可;可進行查看源代碼;
總結
以上是生活随笔為你收集整理的java -1%3_Java_SE 流程控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言-岭回归的代码与案例解读
- 下一篇: 向日葵设置开机自启动