当前位置: 首页 > 知识库问答 >
问题:

只在java中反转数字时保持前导零

周麒
2023-03-14

我在做我的作业题,就是“反转一个数字,保留前导零,删除尾随零,同时保持符号不变”。

如果我把它作为整数反转,它将删除前导和尾随的零,如果我把它作为字符串反转,它将保留所有的零。有人能帮我只保留前导零吗?

例如“-00360”应该是“-6300”。

问题-

编写一个Java函数来接受一个数字,并返回与之相反的数字。如果数字以一个或多个零结尾,那么在相反的数字中,这些零将不存在(因为这些零成为前导零)。如果输入数字为负数,则应保留该符号##示例输入:-123输出:-321输入:1123400输出:43211

共有2个答案

狄玉书
2023-03-14

正如YCF_L所说的,你可以只使用一个StringBuilder,有一个负数不会有太大的区别。你可以包括一张支票。

public class FunWithNumbers {
    public static int numberReverser(String number) {
        System.out.println("Input: " + number);

        int returnVal;
        String returnString;
        boolean negative = false;

        //If minus is always at the start if it is there
        if(number.substring(0, 1).equals("-")) {
            negative = true;
        }

        if(negative) {
            returnString = new StringBuilder(number.substring(1, number.length() - 1)).reverse().toString().replaceFirst("^[0]+", "");
            returnString = "-" + returnString;
        } else {
            returnString = new StringBuilder(number).reverse().toString().replaceFirst("^[0]+", "");
        }

        try {
            returnVal = Integer.parseInt(returnString);
        } catch (NumberFormatException nFE) {
            System.out.println("There was a number format exception");
            returnVal = -1;
        }

        System.out.println("Output: " + returnVal + "\n");
        return returnVal;
    }

    public static int numberReverser(int number) {
        return numberReverser(Integer.toString(number));
    }

    public static void main(String[] args) {
        //Usage
        FunWithNumbers.numberReverser("003600");
        FunWithNumbers.numberReverser("-003600");

        FunWithNumbers.numberReverser((int)0036000D);
        FunWithNumbers.numberReverser((int)-003600D);
    }
}

输出

Input: 003600
Output: 6300

Input: -003600
Output: -6300

Input: 36000
Output: 63

Input: -3600
Output: -63

您可能会注意到,这里有两种输入方法,但只有一种方法可以为您提供所需的正确输出。

第一种方式如果有一个String。这提供了预期的输出。第二种方法(带有int)不提供预期的输出。这是因为int不会存储前导零。类似地,如果您试图输入一个带有前导零的int,您实际上可以将其转换为八进制。为了避免这种情况,您可以使用(int)

巫马修为
2023-03-14

在下面的代码中,您可以反转负数和正数。在方法recsedString(String num)上,您可以反转您的数字。String recseNumKeeper()可以帮助您保持新的反转数字。使用for循环,您可以反转数字,123=

import java.util.Scanner;

public class Reverse {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter number");
        //input
        String number = scanner.next();

        System.out.println(Reverse.reversedString(number));

    }

    private static String reversedString(String num) {

        String reverseNumKeeper = "";
        //reverse number with and without negative sign
        for (int i = num.length(); i > 0; i--) {
            reverseNumKeeper += num.charAt(i - 1);
        }

        //check if reverseNumKeeper has a negative sign or not
        if (reverseNumKeeper.contains("-")) {
            return "-" + Integer.parseInt(reverseNumKeeper.replace("-", ""));
        } else {
            return "" + Integer.parseInt(reverseNumKeeper);
        }

    }

}
 类似资料:
  • 我只需要反转字符串中的字母,并使用将符号和数字保持在相同的位置,并且我还需要保持反转单词的相同顺序。我的代码反转字符串并将符号和数字保持在适当的位置,但更改单词的顺序,例如: 我的输入字符串: a1bcd efg!H 我的输出字符串: h1gfe dcb!A. 相反,我的输出应该是: d1cba hgf! e

  • 我有一个阿拉伯语的数字串,我想把它转换成英语,我用这个: 问题是它删除了前导零,我想保留它,因为这是一个电话号码。

  • 问题内容: 我保存在一个名为的String变量中。 我需要打印,但是要反转。 我怎样才能做到这一点?我知道Java中已经内置了某种功能。 问题答案: 你可以使用此: 或者,对于JDK 1.5之前的版本,请使用代替-它们具有相同的。感谢评论员指出,如今在没有并发问题的情况下,这是首选方法。

  • 问题内容: 我正在编写一个打算在双监视器设置上运行的应用程序,其中“ Display” JFrame在一个监视器上全屏显示,而“ Control” JFrame在另一监视器上全屏显示,向显示器发送指令。我尝试了两种设置全屏显示的方法;每个成功与否取决于操作系统。 在Windows中可以使用,但是在OS X和Linux中,JFrame隐藏在底座/面板下。 我的另一种方法,利用 在我尝试过的所有三个操

  • 问题内容: 有没有更好的方法来获得此结果?如果num的位数比位数多,则此函数将失败,并且我认为它应该在库中的某个位置(例如Integer.toString(x,“%3d”)等) 问题答案: tring.format(http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax) 在你的情况下,它将是: 0 - to

  • 我希望在arraylist中存储一些电话号码,如果号码包含前导零,我希望按原样存储在arraylist中,而不删除前导零。我怎样才能做到这一点。 输出 如何获得01而不是1。