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

时间:2016-02-22 17:54:30

标签: java

我试图将随机数从1反转到9999,并且遇到了一个错误零点:

示例: 23100是随机数。我的输出是132,但解决方案是00132

因为我还不知道数组,转换为字符串(操作),对象解决方案等....我无法找到这个问题的初学者级解决方案。 由于这个页面帮助了我很多,我决定尝试帮助别人。这是问题的初学者解决方案:

123反向321

12300反向00321 //错误问题零解决

我仍然遇到问题:00123和输出32100而不是321

这是我的代码:

import java.util.Scanner;
public class R_N{
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;
  } 
 }
}

2 个答案:

答案 0 :(得分:0)

据我所知,这种任务不是关于使用字符串或其他东西。这一切都是为了正确使用modulo和div。 00123尾随零只有在它的文本值时才会出现。 123是一个数字。所以你的程序适用于你的任务。但你的if(z == 0)没有意义:)

答案 1 :(得分:0)

要将00123反转为32100,您需要将输入读作String,然后测试它是否只包含带正则表达式的数字(例如\\d+ }),最后你可以从最后打印每个字符迭代它。像,

Scanner input = new Scanner(System.in);
System.out.print("Please enter a number:\n");
System.out.flush();
while (input.hasNextLine()) {
    String x = input.nextLine().trim();
    if (x.matches("\\d+")) {
        // Iterate the input String in reverse order,
        for (int i = x.length() - 1; i >= 0; i--) {
            // Print each character
            System.out.print(x.charAt(i));
        }
        System.out.println();
    } else {
        // Give the user a message ...
        System.out.printf("%s is not a number%n", x);
    }
    System.out.print("Please enter a number:\n");
    System.out.flush();
}