有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

仅使用循环的java反向编号;没有数组,转换成字符串只是初学者…错误:零

我正试图将随机数从1反转到9999,但遇到了一个错误0:

示例: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) 个答案

  1. # 1 楼答案

    为了将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();
    }
    
  2. # 2 楼答案

    据我所知,这类任务不是关于使用字符串之类的。这都是关于正确使用模和div。 00123尾随零只有在为文本值时才有意义。123是一个数字。所以你的程序很适合你的任务。但是你的if(z==0)没有意义:)