Java方法来检查给定的数字是否对称



iv制作了一个方法来检查给定数字是否对称。

-该方法基于给定的数字是一个数组的思想。

-我给了方法4个不同的参数——numberLength、middle、point1、point2(都指向数字中的某个数字(作为数组((

-尽管代码写得正确,而且在im初始化特定数组时也能正常工作,我不知道如何对给定的数字使用这种方法。

我如何用参数(int数字(设置这个方法,这样我就可以检查给定的数字。

非常感谢

更新**我添加了代码:

public boolean isSymmetric(int num){           
int digits;
int[] number;
number = new int[num];
int length = number.length;
int mid;
if(length%2 == 0) // 
{
mid = length/2;
}else {
mid = length/2+1;
}
int pointer1 =0;
int pointer2 = mid;
while(pointer1<mid && pointer2 < length)
{
if(number[pointer1] == number[pointer2])
{
pointer1=pointer1+1;
pointer2=pointer2+1;
}
else  
System.out.println("number is not symmetric");
return false;
}
System.out.println("number is symmetric");
return true;
}

检查数字是否对称的最简单方法是将其映射到String::class,就像这样:

// Your input number
Integer maybeSymmetricNumber = 12321;
String str = String.valueOf(maybeSymmetricNumber), reverseStr = "";
int strLength = str.length();
for (int i = (strLength - 1); i >=0; --i) {
reverseStr = reverseStr + str.charAt(i);
}
if (str.toLowerCase().equals(reverseStr.toLowerCase())) {
System.out.println(str + " is a symmetric number.");
}
else {
System.out.println(str + " is not a symmetric number.");
}

首先,这里有一个将数字转换为int数组的方法。

  • 它的工作原理是使用Math.log10来计算该数字的10的指数。
    • 例如Math.log10(1234) = 3.xxx。所以转换成一个int,加上1得到4
    • 例如CCD_ 6,所以做同样的事情
  • 然后使用该数字创建一个适当大小的数组
  • 并使用余数(%(和除法(/(运算符来填充它
  • 然后返回数组

public static int[] toArray(int number) {
number = Math.abs(number);
int[] arr = new int[(int) Math.log10(number)+1];
int i = 0;
while (number > 0) {
arr[i++] = number%10;
number/=10;
}
return arr;
}

不幸的是,您的方法无法正常工作,因为它总是返回false。这是因为以下内容缺少{}

else  
System.out.println("number is not symmetric");
return false;

但它仍然不能正确处理所有的值。尝试1234321 and 112211。它们都返回CCD_ 11,但是是对称的。这是因为pointer10开始,pointer2mid开始,并且它们都增加了1

我建议你从length-1开始pointer2,从外向内走向mid。这样就可以解决问题了(当然需要进行一些调试(。

相关内容

最新更新