【視頻+圖文】Java經典基礎練習題(四):鍵盤輸入一個正整數,獲取這個正整數的每一位並將其輸出


能解決題目的代碼並不是一次就可以寫好的
我們需要根據我們的思路寫出后通過debug模式找到不足再進行更改
多次測試后才可得到能解決題目的代碼!
通過學習,練習【Java基礎經典練習題】,讓我們一起來培養這種解決問題思路。

一、視頻講解

點擊這里即可去B站觀看

二、思路分析

Q1: 如何從鍵盤輸入3個整數?

A1: 鍵盤輸入需使用Scanner語句,使用Scanner語句需以下4步驟

  • 導包(可以在第二步創建后按住“Ctrl+shift+O”來自動導包)
    import java.util.Scanner;
  • 創建 Scanner sc = new Scanner (System.in); (sc是對象的名字,只要符合命名規則可更換)
  • 使用(這里介紹的是最簡單是使用方法)
    (1) 獲取鍵盤輸入的int型數字 int num = sc.nextInt();
    (2) 特殊: 獲取鍵盤輸入的字符串 String str = sc.next();
  • 使用完畢,關閉鍵盤輸入 sc.close();(即對象名.close())

Q2: 如何獲得輸入正整數的每一位?

A2: 這里我們需要用到除運算符(“/”)和取余運算符(“%”)

除運算法(“/”)得到的結果為兩數之商 取余運算符(“%”)得到的結果為兩數相除的余數
eg:A/B=商 eg:A%B=A/B的余數

了解了以上兩個運算符,我們來用一個例子具體講解一下
獲取輸入正整數的每一位的步驟:(以12345為例)

  • 第一步:取出個位5:
    我們發現:12345%10=5
    (這里我們用數學來思考12345÷10=1234…5。此過程用計算機實現就需要用“%”)

  • 第二步:取出十位4:
    【這時候你可能會說,小喬我知道啦!用12345%100就可以得到十位數4但實際不是。我們來看看:12345÷100=123…45 所以這里的余數是45並不是4】

    經過觀察我們發現:
    1234%10=4(1234÷10=123…4)(1234的由來: 1234=12345/10)

  • 第三步:取出百位3:(還是運用取出十位2的規律)

    123%10=3(123÷10=12…3)(123的由來:123=1234/10)

  • 第四步:取出千位2:(還是運用取出百位3的規律)

    12%10=2(12÷10=1…2)(12的由來:12=123/10)

  • 第五步:取出萬位1:(還是運用取出千位2的規律)

    1%10=1(1÷10=0…1)(1的由來:1=12/10)

    到此我們整數的每一位就都取出來了

我們根據上面的式子總結規律:

  1. 規律:
  • 先用輸入的正整數num與10取余,
  • 再將輸入的正整數num與10相除

( 這里需要注意的是正整數num/10后的結果依然保存在num變量中即num=num/10)

  1. 規律: 我們可以看到:
  • 最后一次循環被除數為1,此時每一位都已被取出。
  • 所以被除數大於0

 12345%10=5(個位) 12345/10=1234
 1234%10=4(十位)1234/10=123
 123%10=3(百位)123/10=12
 12%10=2(千位)12/10=1
 1%10=1(萬位)1/10=0

三、代碼+詳解+結果

代碼:

package Exercise;

import java.util.Scanner;

//題目:鍵盤輸入一個正整數,獲取這個正整數的每一位並將其輸出
public class QuWei {

	public static void main(String[] args) {
		int num =0;//將鍵盤輸入的數保存在num變量中
		int yu=0;
	//創建
		Scanner sc = new Scanner (System.in);
	//使用
		num=sc.nextInt();//將鍵盤輸入的數保存在num變量中
	//關閉
		sc.close();
		
	/*	思路:先讓num與10取余,
	再讓num與10相除,
	相除后的結果仍保存在num中即num=num/10(被除數需大於0)
	*/
		while(num>0) {
			yu=num%10;//取余
			System.out.print(yu+"  ");
			num=num/10;//相除,讓num變量/10,得到的結果再保存到num變量中
		}		
	}
}

詳解:

以12345為例:

num=12345,因為num>0滿足while循環的條件所以執行while循環

while(num>0) {
			yu=num%10;//取余
			System.out.print(yu+"  ");
			num=num/10;//相除,讓num變量/10,得到的結果再保存到num變量中
		}	
  1. 第一步:得到個位5
  • yu=num%10 → yu=12345%10=5

  • System.out.print(yu+” ”) → 5

  • num=num/10 → num=12345/10=1234

  1. 第二步:得到十位4(此時num=1234>0所以繼續執行while循環)
while(num>0) {
			yu=num%10;//取余
			System.out.print(yu+"  ");
			num=num/10;//相除,讓num變量/10,得到的結果再保存到num變量中
		}
  • yu=num%10 → yu=1234%10=4

  • System.out.print(yu+” ”) → 4

  • num=num/10 → num=1234/10=123

  1. 第三步:得到百位3(此時num=123>0所以繼續執行while循環)
while(num>0) {
			yu=num%10;//取余
			System.out.print(yu+"  ");
			num=num/10;//相除,讓num變量/10,得到的結果再保存到num變量中
		}
  • yu=num%10 → yu=123%10=3

  • System.out.print(yu+” ”) → 3

  • num=num/10 → num=123/10=12

  1. 第四步:得到千位2(此時num=12>0所以繼續執行while循環)
while(num>0) {
			yu=num%10;//取余
			System.out.print(yu+"  ");
			num=num/10;//相除,讓num變量/10,得到的結果再保存到num變量中
		}
  • yu=num%10 → yu=12%10=2

  • System.out.print(yu+” ”) → 2

  • num=num/10 → num=12/10=1

  1. 第五步:得到萬位1(此時num=1>0所以繼續執行while循環)
while(num>0) {
			yu=num%10;//取余
			System.out.print(yu+"  ");
			num=num/10;//相除,讓num變量/10,得到的結果再保存到num變量中
		}
  • yu=num%10 → yu=1%10=1

  • System.out.print(yu+” ”) → 1

  • num=num/10 → num=1/10=0

  1. 因為這時num=0不滿足while(num>0)這個條件所以退出while循環

    程序結束運行。

結果:
在這里插入圖片描述

四、彩蛋

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM