首先:java的重點和難點,命名和緩存
這次咱們的內容主要用到:
命名規則:大小寫字母,下划線,美元符號$,數字,且數字不能打頭
變量的聲明:數據類型划分內存空間,命名,賦值
方法的聲明:修飾符列表,返回值,方法名,形參列表,方法體
示例:
1, 如果讓你計算1~100的奇數和,偶數和,還有1~100的和;
2, 還有1~N的和
3, 九九乘法表
第一題,1~100的奇數和,偶數和,和
先用for循環寫一個
for循環,for循環的運行規則,for(表達式1,表達式2,表達式3),先執行表達式1,並且只執行一次,表達式2進行判斷,如果正確,就接着運行下面的程序,運行完成后,循環到表達式3,然后再判斷表達式2,一直到表達式2判斷錯誤,就會終止循環的運行
循環三要素:初始值(表達式1),終止條件(表達式2),步長(表達式3),表達式2必須為boolean類型
public class For_Ji_Ou{ //用public聲明一個類,並且每個java文件中可以有多個public,但是只能有一個用public修飾的類,這個類的類名必須和文件名一致
public static void main(String[] args){ //main方法,可以說是所有程序都在main方法里執行的
int ji = 0; //用int數據類型,開辟個int長度大小的空間,並給這個空間起個名字叫ji,並給它賦值為0;
int ou = 0; //用int數據類型,開辟個int長度大小的空間,並給這個空間起個名字叫ou,並給它賦值為0;
int sum = 0; //用int數據類型,開辟個int長度大小的空間,並給這個空間起個名字叫sum,並給它賦值為0;
for(int i=0; i <=100 ; i+=2){ //for循環,初始值為0,終止條件為=100,步長為2
ou += i; // ou是咱們已經聲明好的一個變量, 讓ou += i 首先+=是吧左右兩個 數值相加,再把相加的值賦值給左面,大家已經知道什么意思了吧,就是每次循環出來的i都和ou相加,
}
System.out.println( "1-100的偶數和為: "+ou ); //輸出
for(int i=1; i <=100 ; i+=2){ //初始值為1
ji += i;
}
System.out.println( "1-100的奇數和為: "+ji );
for(int i=0; i <=100 ; ++i){ //初始值為1,步長也為1
sum += i;
}
System.out.println( "1-100的和為: "+sum );
}
}
用if寫
if() { 如果判斷正確,就執行下面語句
java語句
}else{ 否則就執行下面語句
java語句
}
public class If{
public static void main(String[] args){
int j = 0; //跟上面for循環一樣一樣
int o = 0;
for(int i=0; i <=100 ; ++i){ //初始值為0,步長為1
if (i % 2 == 1) { //這里我們是算余數,如果除2余數為1,那就肯定是奇數了 對不對 我讓奇數 執行下面語句
j+=i; // 每次都和i相加 再把值賦值給j
}else{ // 余數不等於1 也就是偶數了 就執行下面語句
o+=i; // 每次都和i相加 再把值賦值給o
}
}
System.out.println( "1-100的奇數和"+j ); //輸出
System.out.println( "1-100的偶數和"+o ); //輸出
}
}
第二題 用遞歸寫一個1~N的和
首先什么是遞歸函數,就是跟for一樣,是循環,函數的循環,
什么是遞歸調用,就是函數自己調用自己
但是函數 不調用不執行,調用才執行,並且吧值返回到調用處
遞歸和循環都一樣,有共同的三要素 : 初始值, 終止條件, 步長
public class Di_Gui{ //入口,public修飾的類
public static void main(String[] args){ //main方法
int s = 100; //int數據類型聲明變量 s 並賦值為100
int q = a.m1(s); //int數據類型聲明q 並賦值 賦的值是一個函數的調用,首先先把函數運算完了,才能賦值吧,賦值完成后,才能進行下一步指令吧 因為java的運行時從上到下,從左往右執行的
System.out.println( q ); //輸出p
}
}
class a { //創建一個class類文件 為a
public static int m1(int n){ // 創建一個m1方法,並且用 static修飾,所以這個方法是靜態方法,靜態方法的調用 : 類名.方法名(); 如果在一個作用域就可以: 方法名();
if (n==1) { //如果n==1 就執行下面語句
return 1; //return 返回值, 返回值為1 就是如果運行到這一步,就把值賦值給m1,在終止整個函數
}else{ //n不等於1的時候,就執行下面語句
return n+m1(n-1); //這是重點 返回值里面是個函數,我想返回值,得先把函數運行出來吧,而且這個函數,我傳的實參是n-1, 而不是n了 這樣不管n是多少,早晚有n到1的時候
}
}
}
return n+m1(n-1); 運算大概順序,看下面
/*
10+m1(9)+9+m1(8)+.....+m1(1)
假如上面s等於10的時候.是不是就等於m1(10);
m1(10);當m1(10)時,值為= 10+m1(9) 最后再看后面的 = 10+9+8+7+6+5+4+3+2+1; m1(9);當m1(9 )時,值為= 9 +m1(8) 最后再看后面的 = 9+8+7+6+5+4+3+2+1;
m1(8) 當m1(8 )時,值為= 8 +m1(7) 最后再看后面的 =8+7+6+5+4+3+2+1;
m1(7) 當m1(7 )時,值為= 7 +m1(6) 最后再看后面的 =7+6+5+4+3+2+1;
m1(6) 當m1(6 )時,值為= 6 +m1(5) 最后再看后面的 =6+5+4+3+2+1;
m1(5) 當m1(5 )時,值為= 5 +m1(4) 最后再看后面的 =5+4+3+2+1;
m1(4) 當m1(4 )時,值為= 4 +m1(3) 最后再看后面的 =4+3+2+1;
m1(3) 當m1(3 )時,值為= 3 +m1(2) 最后再看后面的 =3+2+1;
m1(2) 當m1(2 )時,值為= 2 +m1(1) 最后再看后面的 =2+1;
m1(1) 當m1(1 )時,值為= 1 (因為當n=1是,返回值return 返回的是1 所以這里終止函數的運行,並把1 返回給m1)
*/
第三題:九九乘法表
循環三要素 : 初始值, 終止條件, 步長
/*
使用嵌套的for循環打印九九乘法表
1*1=1
2*1=2 2*2=4
.......
9*1=9...............9*9=81
行數和最大格子數相等
*/
public class For_Cheng_Fa_Biao{ //public修飾的類,並且只能有一個,不用說了吧
public static void main(String[] args){ //main方法
for(int i=1; i <=9 ; ++i){ //循環, 記住,循環沒循環一遍,都會把里面的值全部運行完,才算循環了一遍,所以我這嵌套循環,每次外面那個循環循環一次,里面那個循環都會循環完;
for(int j=1; j <= i ; ++j){ //終止條件,不能大於i
System.out.print( j + "*" + i + "=" + (i*j) + " " ); //輸出,結果為j*i=(j*i) 字符串里面的東西是直接輸出的,並且字符串和值的連接符是 +
}
System.out.println( ); //輸出一個換行,不加的話,就會在一排過去,影響美觀
}
}
}
行了 ,寫完了,大家好好理解一下,遞歸函數那個返回值哪里,多理解一下,有哪里寫的不好的,不對的,請多多指點一下
紳士ゝ圖圖.