JAVA——水仙花數問題

李大嘟嘟發表於2024-07-12

2024/07/12
1.問題
2.錯誤解法
3.錯誤分析
4.正確解法
5.其他:關於Java中冪函式的用法
6.參考

1.問題

2.錯誤解法

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int A = nextInt();
		**if (A>=100&&a<=999)**
		{
		    int a = A/100%10;
		    int b = A/10%10;
		    int c = A%10;
		    **if (A==pow(a,3)+pow(b,3)+pow(c,3))**
		    {
		        System.out.println("1");
		    }
		    else
		    {
		        System.out.println("0");
		    }
		}
		else
		{
			System.out.println("您輸入的不是三位數!");
		}
	}
}

3.錯誤分析

  • nextInt() 方法應該由 scanner 呼叫,而不是直接呼叫 nextInt()
  • 在判斷條件中,變數a的使用有誤,應該是 A
  • pow 函式在Java中不是直接可用的,需要使用 Math.pow 方法。

4.正確解法

import java.util.Scanner;
import java.lang.Math; // 匯入Math類以使用pow函式

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);// 使用scanner呼叫nextInt()
		int A = scanner.nextInt();
        //變數A是一個三位數
		if (A >= 100 && A <= 999)
		{
		    int a = A/100%10;
		    int b = A/10%10;
            int c = A%10;
		    //A為int型別,使用Math.pow計算立方和後,強制轉換為int型別後才能與A做比較
		    if (A == (int)(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)))
		    {
		        System.out.println("1");
		    }
		    else
		    {
		        System.out.println("0");
		    }
		}
		else
		{
			System.out.println("您輸入的不是三位數!");
		}
		 scanner.close(); // 關閉scanner
	}
}

5.其他:關於Java中冪函式的用法

* import java.lang.Math; // 應先匯入匯入Math類以使用pow函式。
* Math.pow(a,3)//表示a的三次方。

6.參考
https://blog.csdn.net/bbDreamdotrue/article/details/113410365

相關文章