簡體   English   中英

求數組中回文數的個位數和

[英]To find the single digit sum of palindrome numbers in array

我試圖檢查回文數並找到回文數的個位數總和,但我的代碼沒有返回正確的值(我發現很難從循環中返回總和的值)。 誰能幫我解決這個錯誤。 任何幫助都將得到認可。

import java.util.Scanner;

public class SumOfPalindrome {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the number of array elements");
        int n = sc.nextInt();
        int[] inp = new int[n];
        System.out.println("enter the elements");
        for(int i = 0; i< n ;i++)
        {
            inp[i] = sc.nextInt();
        }
        System.out.println(SumOfPalindromeNumber(inp));
        

    }

    private static int SumOfPalindromeNumber(int[] inp )
    {
        
        int sumpal =0;
        for(int i = 0; i<inp.length;i++)
        {
            int rem =0; 
            int sum = 0;
            while(inp[i]!=0)
            {
                rem = inp[i]%10;
                sum=(sum*10)+rem;
                inp[i]/=10;
            }
            if(inp[i]==sum)
            {
                sumpal+=inp[i];
                
                if(sumpal>9)
                {
                    sumpal=singledigitsum(sumpal);
                }
            }
            
        }
        return sumpal;  
    
    }

    private static int singledigitsum(int sumpal)
    {
        int rem1 = 0;
        int sum1 = 0;
        while(sumpal!=0)
        {
            rem1=sumpal%10;
            sum1+=rem1;
            sumpal/=10;
        }
        if(sum1>9)
        {
            sum1=singledigitsum(sum1);
        }
        return sum1;
    }

}
  1. 輸入數字

  2. 檢查哪些數字是回文。

  3. 如果該數字是回文,則找到其數字之和。

代碼:

    import java.util.Scanner;

public class SumOfPalindrome {

    public static void main(String[] args) {
        SumOfPalindrome sumOfPalindrome=new SumOfPalindrome();
        Scanner sc = new Scanner(System.in);
    System.out.println("Enter the number of array elements");
    int n = sc.nextInt();
    int[] inp = new int[n];
    System.out.println("enter the elements");
    for(int i = 0; i< n ;i++)
    {
        inp[i] = sc.nextInt();
    }
    
    for(int i=0;i<n;i++)
    {
        if(sumOfPalindrome.isPallindrone(inp[i]))
        {
            System.out.println("No -> "+inp[i]+" Sum->"+sumOfPalindrome.sumOfDigits(inp[i]));
        }
    }
}//

public boolean isPallindrone(int no)
{
    int r,sum=0,temp;    
    

    temp=no;    
    while(no>0){    
        r=no%10;  //getting remainder  
        sum=(sum*10)+r;    
        no=no/10;    
    }    
    if(temp==sum)    
    {
        return true;
    }
    else    
    {
        return false;
    }
}



public int sumOfDigits(int no) 
{
    int sum = 0; 
    
    while (no != 0) 
    { 
        sum = sum + no % 10; 
        no = no/10; 
    }   


    return sum;
    }
}

我不明白你的代碼中 sumpal 的目的。 您想要一個以數組形式返回 sumOfPalindromes 的方法。 我評論了錯誤的部分。

import java.util.Scanner;

public class SumOfPalindrome_1 
{

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the number of array elements");
        int n = sc.nextInt();
        int[] inp = new int[n];
        System.out.println("enter the elements");
        for(int i = 0; i< n ;i++)
        {
            inp[i] = sc.nextInt();
        }
        //System.out.println(SumOfPalindromeNumber(inp));
        SumOfPalindromeNumber(inp);
        

    }

    private static void SumOfPalindromeNumber(int[] inp )
    {
        
        int sumpal =0;
        for(int i = 0; i<inp.length;i++)
        {
            int rem =0; 
            int sum = 0;
            while(inp[i]!=0)
            {
                rem = inp[i]%10;
                sum=(sum*10)+rem;
                inp[i]/=10;
            }
            if(inp[i]==sum)
            {
               // sumpal+=inp[i];
                
                /*if(sumpal>9)
                {
                    sumpal=singledigitsum(sumpal);
                }
                */
                System.out.println(singleDigitSum(inp[i]));
            }
            
        }
        
    
    }

    private static int singleDigitSum(int sumpal)
    {
        int rem1 = 0;
        int sum1 = 0;
        while(sumpal!=0)
        {
            rem1=sumpal%10;
            sum1+=rem1;
            sumpal/=10;
        }
        if(sum1>9)
        {
            sum1=singleDigitSum(sum1);
        }
        return sum1;
    }

}

抱歉,如果情況並非如此,但這似乎是您正在尋找編碼測試的答案。

暫無
暫無

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

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