Java 输入一个数字,然后将其反转
好的,所以我写了一个程序,要求用户输入一个数字,然后将其反转。我在这方面取得了成功,但是该程序不会反转以0结尾的数字。例如,如果我输入1234,它将打印出4321,但是如果我输入1200,它将只输出21。我尝试将要输出的数字转换为字符串。请帮助我理解我哪里做错了。请记住我是这方面的初学者:)。下面是我的代码Java 输入一个数字,然后将其反转,java,string,numbers,reverse,Java,String,Numbers,Reverse,好的,所以我写了一个程序,要求用户输入一个数字,然后将其反转。我在这方面取得了成功,但是该程序不会反转以0结尾的数字。例如,如果我输入1234,它将打印出4321,但是如果我输入1200,它将只输出21。我尝试将要输出的数字转换为字符串。请帮助我理解我哪里做错了。请记住我是这方面的初学者:)。下面是我的代码 import java.util.*; public class ReverseNumber { public static void main (String [] args)
import java.util.*;
public class ReverseNumber
{
public static void main (String [] args)
{
Scanner n = new Scanner(System.in);
int num;
System.out.println("Please enter the number");
num = n.nextInt();
int temp = 0;
int reverse = 0;
String str = "";
System.out.println("The number before getting reversed " + num);
while (num != 0)
{
temp = num % 10;
reverse = reverse*10 + temp;
num = num/10;
str = Integer.toString(reverse);
}
//String str = Integer.toString(reverse);
System.out.println("The reversed number is " + str);
}
}
您将反向数字存储为整数。1200的反向是0021,但这只是21作为整数。您可以通过将每个数字分别转换为字符串来解决此问题。问题是,您将反向值作为数字计算,当涉及数字时,0021和21之间没有区别。您需要的是在反转时直接打印反转的值,或者将其构建为字符串,然后打印出来 前一种方法是这样的:
System.out.print("The reversed number is ");
while (num != 0)
{
System.out.print(num % 10);
num = num / 10;
}
System.out.println();
String reverse = "";
while (num != 0)
{
reverse = reverse + Integer.toString(reverse);
num = num / 10;
}
System.out.println("The reversed number is " + reverse);
后一种方法是这样的:
System.out.print("The reversed number is ");
while (num != 0)
{
System.out.print(num % 10);
num = num / 10;
}
System.out.println();
String reverse = "";
while (num != 0)
{
reverse = reverse + Integer.toString(reverse);
num = num / 10;
}
System.out.println("The reversed number is " + reverse);
如果需要进一步使用反向值,则后一种方法非常有用。然而,由于超出了这个问题范围的原因,它是次优的。如果您研究何时最好使用
StringBuilder
而不是字符串串联,您可以获得更多信息。去掉两个零的原因是将temp和reverse变量声明为整数
如果您将一个值赋给一个左侧为零的整数,例如000001或002,它将被去掉,并将成为我的示例中的1或2
所以,在你的例子中,1200变成了0021,但由于你声明的变量是整数,它只变成了21。我发现这种方法非常有趣,因为我通常不会这样反转它。我只是想用另一种方式,你可以反转它,或者在这个例子中,反转任何字符串
public static void main()
{
Scanner n = new Scanner(System.in);
System.out.print("Please enter the number:");
int num = n.nextInt();
System.out.println("The number before getting reversed is " + num);
String sNum = Integer.toString(num);
String sNumFinal = "";
for(int i = sNum.length()-1; i >= 0; i--)
{
sNumFinal += sNum.charAt(i);
}
System.out.print("The reversed number is " + sNumFinal);
}
如果您想更进一步,以便输入“00234”并将其输出为“43200”(因为否则它将去掉前导零),您可以执行以下操作:
public static void main()
{
Scanner n = new Scanner(System.in);
System.out.print("Please enter the number:");
String num = n.next(); // Make it recieve a String instead of int--the only problem being that the user can enter characters and it will accept them.
System.out.println("The number before getting reversed is " + num);
//String sNum = Integer.toString(num);
String sNumFinal = "";
for(int i = num.length()-1; i >= 0; i--)
{
sNumFinal += num.charAt(i);
}
System.out.print("The reversed number is " + sNumFinal);
}
当然,如果您想将其作为int,只需执行Integer.parseInt(sNumFinal)代码>
}噢,哇,谢谢你,雅各布,我终于明白我做错了什么。非常感谢您的帮助。请不要只发布代码而不告诉我们我们正在查看的内容。