仅使用循环反转数字;没有数组,只是初学者转换为字符串...错误:零

时间:2016-02-22 17:35:55

标签: java

首先抱歉我的英语(不是我的母语)。 我是编程新手(目前正在学习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;
 }}}

3 个答案:

答案 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中的整数。希望你喜欢我的工作。

快乐的编码。