簡體   English   中英

為什么我的 Beam 編號程序給出了錯誤的 output?

[英]Why is my Beam number program giving the wrong output?

Beam數是一個數字,其中數字的數字的平方和大於數字本身。

例如:在沒有。 25,數字平方和 = 2^2 + 5^2 = 4 + 25 = 29(大於接受的數字)

因此 25 是 Beam 編號。

這是我的代碼:

import java.util.Scanner;
class test
{
    public static void main()
    {
        System.out.println("\f");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the number");
        int m = sc.nextInt(); 
        int sum  = 0;
        while (m > 0)
        {
            sum += (m%10)*(m%10);
            m = m/10;
        }
        if (sum > m)
        {
            System.out.println("It is a Beam number");
        }
        else
        {
            System.out.println("It is not a Beam number");
        }
    }
}

程序編譯正確,但邏輯上存在一些問題,因為它沒有給出所需的 output。 給出一張output的圖片: 在此處輸入圖像描述

51 顯然不是 Beam 號。 因為其數字的平方和 (25+1=26) 本身小於 51。 我要做哪些改變?

您的 while 循環正在破壞有關輸入數字的信息。 每當您輸入大於 0 的數字時,總和將大於 0,但m將始終為0

while循環中使用另一個初始化為m的變量來執行計算,以便m保持輸入的值,以便最后的比較是正確的。

這是您自己調試的方法。 注意打印語句。

class test // unrelated note:  by convention class names should start with
           // upper case letters.
{
    public static void main()
    {
        System.out.println("\f");
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the number");
        int m = sc.nextInt(); 
        int sum  = 0;
        System.out.println("Before while loop.");
        System.out.println("m = " + m + ", sum = " + sum);
        while (m > 0)
        {
            sum += (m%10)*(m%10);
            m = m/10;
        }
        System.out.println("After while loop.");
        System.out.println("m = " + m + ", sum = " + sum);
        if (sum > m)
        {
            System.out.println("It is a Beam number");
        }
        else
        {
            System.out.println("It is not a Beam number");
        }
    }
}

在關鍵位置使用print statements並打印出各個字段是調試程序的第一步也是最常見的步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM