Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ย้อนกลับและเพิ่มฟังก์ชันใน Java


เราได้รับเป็นจำนวนเต็มและวาระที่นี่คือการกลับหลักของตัวเลขและเพิ่มตัวเลขที่กลับด้านกับตัวเลขเดิมและตรวจสอบว่าตัวเลขผลลัพธ์เป็น palindrome หรือไม่และ กระบวนการนี้จะทำซ้ำจนกว่าจะเกิดขึ้น จุดแตกหักของกระบวนการคือการวนซ้ำ 1,000 ครั้งและมีค่ามากกว่าค่ายาวสูงสุด (Long.MAX_VALUE)

ตัวอย่าง

ป้อนข้อมูล − 1678

ผลผลิต − Palindrome ของอินพุตที่กำหนด 1678 293392

คำอธิบาย − หมายเลขอินพุตจะถูกกลับรายการก่อนแล้วจึงเพิ่มลงในหมายเลขเดิม จากนั้นจึงตรวจสอบหา palindrome หากไม่ใช่ palindrome กระบวนการเดียวกันจะทำซ้ำกับหมายเลขที่อัปเดต จุดแตกหักของกระบวนการคือการวนซ้ำ 1,000 ครั้งและมีค่ามากกว่าค่ายาวสูงสุด (Long.MAX_VALUE)

ป้อนข้อมูล − 202021038

ผลผลิต − Palindrome ของอินพุตที่กำหนด 202021038 1453553541

คำอธิบาย − หมายเลขอินพุตจะถูกกลับรายการก่อนแล้วจึงเพิ่มลงในหมายเลขเดิม จากนั้นจึงตรวจสอบหา palindrome หากไม่ใช่ palindrome กระบวนการเดียวกันจะทำซ้ำกับหมายเลขที่อัปเดต จุดแตกหักของกระบวนการคือการวนซ้ำ 1,000 ครั้งและมีค่ามากกว่าค่ายาวสูงสุด (Long.MAX_VALUE)

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ภายในฟังก์ชั่นหลัก

    • หมายเลขอินพุตจะถูกส่งผ่านในวิธี calculateReverseandAdd(input)

  • ภายในเมธอด calcReverseandAdd

    • มีการแนะนำตัวแปรใหม่ rev_number

    • วนซ้ำด้วยหมายเลขเงื่อนไข <=max

    • ภายในลูป การย้อนกลับของตัวเลขได้มาจากการส่งตัวเลขผ่านเมธอด reverseNumber()

    • ตัวเลขที่กลับด้านจะถูกเพิ่มเข้ากับหมายเลขอินพุต

    • จากนั้นตรวจสอบหมายเลขที่ได้รับสำหรับ palindrome โดยส่งหมายเลขในเมธอด checkPalindrome() , ถ้าใช่ ตัวเลขจะถูกพิมพ์ออกมาเป็นเอาต์พุตให้กับผู้ใช้

    • หากตัวเลขไม่ใช่พาลินโดรม กระบวนการเดียวกันจะถูกทำซ้ำกับตัวเลขที่ได้รับจนกว่าจะได้พาลินโดรม หากจำนวนผลลัพธ์มากกว่าค่ายาวสูงสุด จะไม่มี palindrome ที่เป็นไปได้ในช่วงสำหรับจำนวนที่ระบุ

ตัวอย่าง

import java.util.*;
public class ReverseAdd{
   static final long max = Long.MAX_VALUE;
   static long reverseNumber(long number){
      long rev_number = 0;
      while (number > 0){
         rev_number = rev_number * 10 + number % 10;
         number = number / 10;
      }
      return rev_number;
   }
   static boolean checkPalindrome(long number){
      return (reverseNumber(number) == number);
   }
   static void calculateReverseandAdd(long number){
      long rev_number = 0;
      System.out.println("Palindrome of the given input " + number);
      while (number <= max){
         rev_number = reverseNumber(number);
         number = number + rev_number;
         if (checkPalindrome(number)){
            System.out.println(number);
            break;
         }
         else if (number > max){
            System.out.println("No possible palindromes for the input");
         }
      }
   }
   public static void main(String[] args){
      calculateReverseandAdd(1678);
      calculateReverseandAdd(2961);
      calculateReverseandAdd(202021038);
   }
}

ผลลัพธ์

หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้

Palindrome of the given input 1678
293392
Palindrome of the given input 2961
69696
Palindrome of the given input 202021038
1453553541