首先抱歉我的英语(不是我的母语)。 我是编程新手(目前正在学习Java),刚刚完成关于循环的讲座。 我有一个任务是将随机数从1到9999反转,并且遇到了一个零错误:
示例:23100输出:132,解决方案是00132
因为我还不知道Arrays,转换为String(操作),对象解决方案等....我找不到这个问题的初学者解决方案 由于这个页面帮助了我很多,我决定,也许可以帮助别人:这是初学者解决问题的方法:
123反向321
12300反向00321 //错误问题零解决
现在我仍然遇到问题:00123和输出32100而不是321 但希望很快解决这个问题
祝你好运
import java.util.Scanner;
public class MP{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.print("enter number:\n");
int x=input.nextInt();
int temp=x;
int z;
while(temp>0){
z=temp%10;
if(z==0){
System.out.printf("%d",0);
}else{
System.out.printf("%d",z);
}
temp=temp/10;
}}}
答案 0 :(得分:0)
每当你尝试将00123存储为整数时,它存储为123 [编辑:显然Java假设那些前导零意味着你输入的是十六进制数字(base-16)而不是基数-10)因此结果将不是123,而是291 ]。那么当你反转它时,前导零被省略。在我看来,不幸的是,你要完成的唯一方法是使用数组或字符串(我建议使用字符串)。
话虽这么说,如果你因为不知道如何使用它而避免使用String /数组,那么就不要害怕;字符串相当容易使用。您可能遇到的一个问题是人们往往不会让他们的代码很容易理解。如果是这样的话,我们也有同样的痛苦。我将尝试做一个易于理解的例子:
它看起来像这样:
import java.util.Scanner;
public class MP{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("enter number:\n");
String temp = input.next(); //use next() to look for a String
int digit = temp.length()-1; //starting at the last digit
while (digit >= 0){
char z = temp.charAt(digit); //get the current digit
System.out.print(z); //Print that digit
digit = digit - 1; //Go backwards one digit
}
}
}
最终你应该能够为同一件事写一个更短的程序:
import java.util.Scanner;
public class MP{
public static void main(String[] args){
System.out.print("enter number:\n");
String temp = new Scanner(System.in).next();
for (int i=temp.length()-1; i>=0; i--){
System.out.print(temp.charAt(i));
}
}
}
答案 1 :(得分:0)
既然你是初学者,为什么不和String一起使用String呢? 它应该适合你的目的:
{{1}}
答案 2 :(得分:0)
C:\Program Files (x86)\MSBuild\14.0\Bin\
我为字符串做了,当我们将int转换为字符串时,它不会被给出为十六进制格式,它将需要38成为字符串,因为00123相当于38中的整数。希望你喜欢我的工作。
快乐的编码。