流程控制語句:
順序結構 程序從上往下執行
選擇(判斷)結構 有選擇的執行
if條件
switch語句
循環結構 重複執行某段代碼塊多次
有三種循環
for:
for(初始化表達式;條件表達式;增量表達式) {
循環體;
}
while:
while(條件表達式) {
循環體;
}
升級版:
初始化表達式;
while(條件表達式) {
循環體;
增量表達式;
}
do...while:
do {
循環體;
}while(條件表達式);
升級
初始化表達式;
do {
循環體;
增量表達式;
}while(條件表達式);
區別:
for,while循環都是先執行判斷,如果判斷爲true,再執行循環體。
do...while是先執行循環體,再判斷,最後如果爲true,會繼續執行循環體。至少執行一次循環體。
我們到底用誰呢?
一般情況下,常用for和while。
如果是一個範圍,用for居多。
如果僅僅只是一個判斷,用while循環。
如果增量在變化後,在外面不再被使用,就使用for循環,效率高一些。
for語句
當明確了範圍時,用for循環,並且定義的變量不在循環外參與運算
while語句
只能做出判斷,在什麼時候結束循環時,可以用while循環語句
do...while語句
只有它是先執行循環體,後判斷,至少執行一次循環體
附加知識:
鍵盤錄入的使用步驟:
導包:
import java.util.Scanner;
創建對象
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
案例:
/*
用while循環求1-100之間的奇數和
分析:
第一步:定義一個求奇數和的變量
第二部:初始化變量,
第三部:while循環判斷
第四步:
*/
class GetSum2
{
public static void main(String[] args)
{
int i=1,sum=0;
while(i<=100){
if(i%2!=0){
sum+=i;
}
i++;
}
System.out.println("1-100的奇數和爲:"+sum);
}
}
求階乘:
import java.util.Scanner;
class JieCheng
{
public static void main(String[] args)
{
int a=getSc();
getSum(a);
}
public static int getSc(){
Scanner sc=new Scanner(System.in);
System.out.println("請輸入一個整數:");
int a=sc.nextInt();
return a;
}
public static void getSum(int a){
int sum=1;
for(int i=2;i<=a;i++){
sum*=i;
}
System.out.println(a+"的階乘是:"+sum);
}
}
求100-1000之間的水仙花數
class ShuiXian{
public static void main(String[] args){
for(int i=100;i<1000;i++){
int g=i%10;
int s=i/10%10;
int b=i/100%10;
if(g*g*g+s*s*s+b*b*b==i){
System.out.println(i);
}
}
}
}
/*
我國最高山峯是珠穆朗瑪峯,8848米。現在我有一張足夠大的紙,它的厚度是0.01米。
請問,我摺疊多少次,可以折成珠穆朗瑪峯的高度。
*/
class GetMountHeight{
public static void main(String[] args){
float h=0.01f;
int count=1;
int ct=2;
while(ct*h<8848){
//System.out.println(count);
ct*=2;
count++;
}
System.out.println("需要疊加"+count+"次,可以達到珠穆朗瑪峯的高度!");
getHeight();
}
public static void getHeight(){
int count=0;
for(float h=0.01f;h<=8848;h*=2){
count++;
}
System.out.println("需要疊加"+count+"次,可以達到珠穆朗瑪峯的高度!");
}
}
/*
153=1^3+5^3+3^3
先定義三個變量;
int a,b,c;
定義for循環求出100-999之間的數。
for(int i=100;i<=999;i++)
分解這個數字,求出百,十,個,位數字
a=i/100%10;
b=i/10%10;
c=i%10;
*/
class GetNumPrint
{
public static void main(String[] args)
{
int num=0;
for(int i=10000;i<100000;i++){
int ge=i%10;
int shi=i/10%10;
int bai=i/100%10;
int qian=i/1000%10;
int wan=i/10000%10;
if(ge==wan&&shi==qian&&ge+shi+qian+wan==bai){
System.out.println(i);
num++;
}
}
System.out.println("滿足條件的數共有:"+num);
}
}
函數:
定義:完成特定功能的代碼塊
格式:
修飾符 返回值類型 函數名(數據類型 形式參數1,數據類型 形式參數2,...) {
函數體;
return 返回值;
}
修飾符:public static
返回值類型:是功能的結果值的數據類型。如果沒有結果,這裏是void。
函數名:爲了方便函數的調用,我們給其起了一個名字。
參數:
實際參數 實際參與運算的值
形式參數 用於接收實際參數的變量
函數體:就是完成功能的代碼塊。
return 返回值:返回值就是功能的結果,由return把結果返回給調用者。
哪裏調用,返回到哪裏。
如果是void類型,這裏有return; 但是可以省略。
函數的特點:
只有被調用才執行、函數之間是平級關係,不要在一個函數中定義一個函數、提高代碼複用性
寫函數的兩個明確:
返回值類型、參數列表(類型及個數)
函數的調用
void類型:只能單獨調用
非void型:單獨調用無意義、可以輸出調用、可以賦值調用(常用方式)
函數重載
函數名相同,參數列表不同(個數不同,對應的類型不同)
跟返回值無關