for(初始化語句;判斷條件語句;控制條件語句) {
? ? 循環體語句;
}
A:判斷條件語句無論簡單還是復雜結果是boolean類型。
B:循環體語句如果是一條語句,大括號可以省略;如果是多條語句,大括號不能省略。建議永遠不要省略。
C:一般來說:有左大括號就沒有分號,有分號就沒有左大括號
/*
For循環結構的使用
一、循環結構的4個要素
① 初始化條件
② 循環條件 ?--->是boolean類型
③ 循環體
④ 迭代條件
二、for循環的結構
for(①;②;④){
? ?③
}
執行過程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②
*/
class ForTest {
? ?public static void main(String[] args) {
? ? ? ?/*
? ? ? ?System.out.println("Hello World!");
? ? ? ?System.out.println("Hello World!");
? ? ? ?System.out.println("Hello World!");
? ? ? ?System.out.println("Hello World!");
? ? ? ?System.out.println("Hello World!");
? ? ? ?*/
? ? ? ?for(int i = 1;i <= 5;i++){//i:1,2,3,4,5
? ? ? ? ? ?System.out.println("Hello World!");
? ? ? ?}
? ? ? ?//i:在for循環內有效。出了for循環就失效了。
? ? ? ?//System.out.println(i);
? ? ? ?
? ? ? ?//練習:
? ? ? ?int num = 1;
? ? ? ?for(System.out.print('a');num <= 3;System.out.print('c'),num++){
? ? ? ? ? ?System.out.print('b');
? ? ? ?}
? ? ? ?//輸出結果:abcbcbc
? ? ? ?System.out.println();
? ? ? ?//例題:遍歷100以內的偶數,輸出所有偶數的和,輸出偶數的個數
? ? ? ?int sum = 0;//記錄所有偶數的和
? ? ? ?int count = 0;//記錄偶數的個數
? ? ? ?for(int i = 1;i <= 100;i++){
? ? ? ? ? ?
? ? ? ? ? ?if(i % 2 == 0){
? ? ? ? ? ? ? ?System.out.println(i);
? ? ? ? ? ? ? ?sum += i;
? ? ? ? ? ? ? ?count++;
? ? ? ? ? ?}
? ? ? ? ? ?//System.out.println("總和為:" + sum);
? ? ? ?}
? ? ? ?System.out.println("總和為:" + sum);
? ? ? ?System.out.println("個數為:" + count);
? ?}
}
?
需求:求5的階乘。
什么是階乘呢?
? ? n! = n*(n-1)! 規則
? ? n! = n*(n-1)*(n-2)*...*3*2*1
? ? ? //定義最終結果變量
? ? ? int jc = 1;
? ? ? //這里的x其實可以直接從2開始
? ? ? for(int x=2; x<=5; x++) {
? ? ? ? ? jc *=x;
? ? ? }
? ? ? System.out.println("1-5的階乘是:"+jc);
需求:在控制臺輸出所有的”水仙花數” ?
分析:
? ? 所謂的水仙花數是指一個三位數,其各位數字的立方和等于該數本身。
? ? 舉例:153就是一個水仙花數。
? ? 153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
? ? A:三位數其實是告訴了我們范圍。
? ? B:通過for循環我們就可以實現獲取每一個三位數
? ? ? 但是麻煩是如何獲取這個三位數的個,十,百位上的數據
? ? ? 我們如何獲取一個數據的個,十,百呢?
? ? ? ? 假設有個一個數據:153
? ? ? ? ge: ? ?153%10 = 3
? ? ? ? shi: 153/10%10 = 5
? ? ? ? bai:153/10/10%10 = 1
? ? ? ? qian:x/10/10/10%10
? ? ? ? wan: ?x/10/10/10/10%10
? ? ? ? ...
? ? C:讓ge*ge*ge+shi*shi*shi+bai*bai*bai和該數據比較
? ? ? 如果相同,就把該數據在控制臺輸出。
?
???????????? //三位數其實是告訴了我們范圍。
? ? for(int x=100; x<1000; x++) {
? ? ? ? int ge = x%10;
? ? ? ? int shi = x/10%10;
? ? ? ? int bai = x/10/10%10;
? ? ? ? //讓ge*ge*ge+shi*shi*shi+bai*bai*bai和該數據比較
? ? ? ? if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
? ? ? ? ? ? //如果相同,就把該數據在控制臺輸出。
? ? ? ? ? ? System.out.println(x);
? ? ? ? }
? ? }
練習:請在控制臺輸出滿足如下條件的五位數
? ? 個位等于萬位
? ? 十位等于千位
? ? 個位+十位+千位+萬位=百位
分析:
? ? A:五位數就告訴了我們范圍。
? ? B:分解每一個五位數的個,十,百,千,萬位上的數據
? ? C:按照要求進行判斷即可
? ? //五位數就告訴了我們范圍。
? ? for(int x=10000; x<100000; x++) {
? ? ? ? //分解每一個五位數的個,十,百,千,萬位上的數據
? ? ? ? int ge = x%10;
? ? ? ? int shi = x/10%10;
? ? ? ? int bai ?= x/10/10%10;
? ? ? ? int qian = x/10/10/10%10;
? ? ? ? int wan = x/10/10/10/10%10;
? ? ? ? //按照要求進行判斷即可
? ? ? ? if((ge==wan) && (shi==qian) && (ge+shi+qian+wan==bai)) {
? ? ? ? ? ? System.out.println(x);
? ? ? ? }
? ? }
?
/*
題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
比如:12和20的最大公約數是4,最小公倍數是60。
說明:break關鍵字的使用:一旦在循環中執行到break,就跳出循環
*/
import java.util.Scanner;
class ForTest{
? ?public static void main(String[] args){
? ?
? ? ? ?Scanner scan = new Scanner(System.in);
? ? ? ?System.out.println("請輸入第一個正整數:");
? ? ? ?int m = scan.nextInt();
? ? ? ?
? ? ? ?System.out.println("請輸入第二個正整數:");
? ? ? ?int n = scan.nextInt();
? ? ? ?
? ? ? ?//獲取最大公約數
? ? ? ?//1.獲取兩個數中的較小值
? ? ? ?int min = (m <= n)? m : n;
? ? ? ?//2.遍歷
? ? ? ?for(int i = min;i >= 1 ;i--){
? ? ? ? ? ?if(m % i == 0 && n % i == 0){
? ? ? ? ? ? ? ?System.out.println("最大公約數為:" + i);
? ? ? ? ? ? ? ?break;//一旦在循環中執行到break,就跳出循環
? ? ? ? ? ?}
? ? ? ?}
? ? ? ?
? ? ? ?//獲取最小公倍數
? ? ? ?//1.獲取兩個數中的較大值
? ? ? ?int max = (m >= n)? m : n;
? ? ? ?//2.遍歷
? ? ? ?for(int i = max;i <= m * n;i++){
? ? ? ? ? ?if(i % m == 0 && i % n == 0){
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?System.out.println("最小公倍數:" + i);
? ? ? ? ? ? ? ?break;
? ? ? ? ? ?
? ? ? ? ? ?}
? ? ? ?}
? ? ? ?
? ?}
}
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?