Java - 我应该在一个数组中保存一个输入的数字,并且应该测试它是否是一个回文。我的代码似乎错了,但我不知道为什么。你能帮帮忙吗?谢谢。
public static void main(String[] args) {
// Zahleingabe
int input = readInt("Bitte geben Sie eine positive Zahl ein:");
while(input < 0) {
input = readInt("Bitte geben Sie eine positive Zahl ein:");
}
// Array anlegen
int[] inputArray = new int[input];
// Array zerlegen
int i = 0;
int j;
while(input / 10 == 0) {
j = input % 10;
inputArray[i] = j;
input = input / 10;
}
int[] newInputArray = new int[inputArray.length];
i = 0;
while(i < newInputArray.length-1) {
newInputArray[i] = inputArray[i];
i++;
}
// Auf Palindrom Eigenschaft überprüfen
i = 0;
j = newInputArray.length-1;
while(i < j) {
if(newInputArray[i] != newInputArray[j]) {
write("Die Zahl " + input + " ist kein Palindrom.");
return;
}
i++;
j--;
}
write("Die Zahl " + input + " ist ein Palindrom.");
}
编辑来自通讯:
Math.XXX
函数(log10,pow,...)答案 0 :(得分:0)
伪代码:
arrayDim = ((int)Math.log10(121))+1
// 3 从power=arrayDim-1
循环到power = 0
// 2,1,0
powerForDivide = 10^power
// 100,10,1 digit = inputNumber / powerForDivide
(使用整数div,无小数)// 1,2,1 digit
放入arrayDim-(power+1)
// [1,2,1] inputNumber
// 121 - 100,21-20,1-1 powerForDivide*digit
测试你的阵列
// 之后的值表示给定输入为121的不同循环中的值。
<强>代码:强>
public class JavaFiddle
{
// get the amount of digits (==dimensions) to store an integer n
public static int getDims(int n)
{
if (n < 10) return 1;
return 1 + getDims(n/10) ;
}
// helper to calculate 10^p
public static int tenToPower(int p)
{
if (p < 1) return 1;
return 10 * tenToPower(p-1);
}
public static void main(String[] args)
{
// removed console input so it works with https://javafiddle.leaningtech.com/
int input = 12255221;
int arrayDim = getDims(input); // ((int)Math.log10(input))+1;
System.out.println("arrayDim(" + input + ") = " + arrayDim);
// Array anlegen
int[] inputArray = new int[arrayDim];
int i = arrayDim;
int rest = input;
int powerForDiv = tenToPower(i-1); // (int)Math.pow(10,i-1);
while(i > 0) {
i = i - 1;
// System.out.println(powerForDiv);
int digit = rest / powerForDiv;
int index = arrayDim - i - 1;
System.out.println(digit + " at " + index);
rest = rest - digit*powerForDiv;
inputArray[arrayDim - i - 1] = digit;
powerForDiv = powerForDiv / 10;
}
System.out.print("[");
for ( int idx = 0; idx < arrayDim; idx++) {
System.out.print(inputArray[idx]);
if (idx <arrayDim-1)
System.out.print(":");
else
System.out.println("]");
}
i = 0;
int j = inputArray.length-1;
while(i < j) {
if(inputArray[i] != inputArray[j]) {
System.out.println( input + " no Palindrom.");
return;
}
i++;
j--;
}
System.out.println( input + " is Palindrom.");
}
}