Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,仅在反转数字时保留前导零_Java - Fatal编程技术网

在java中,仅在反转数字时保留前导零

在java中,仅在反转数字时保留前导零,java,Java,我在做我的赋值问题,就是“反转一个数字,保留前导零,删除尾随零,同时保持符号不变” 如果我把它作为一个整数取反,它将删除前导零和尾随零,如果我把它作为一个字符串取反,它将保留所有的零。 谁能帮我只保留前导零吗 例如“-00360”应为“-6300” 问题- 编写一个Java函数来接受一个数字并返回该数字的倒数。如果数字以一个或多个零结尾,则在反向数字中,这些零将不存在(因为这些零成为前导零)。如果输入数字为负数,则应保留该符号##示例输入:-123输出:-321输入:1123400输出:4321

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

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

例如“-00360”应为“-6300”

问题-


编写一个Java函数来接受一个数字并返回该数字的倒数。如果数字以一个或多个零结尾,则在反向数字中,这些零将不存在(因为这些零成为前导零)。如果输入数字为负数,则应保留该符号##示例输入:-123输出:-321输入:1123400输出:43211在以下代码中,您可以反转负数和正数。在方法
reversedString(String num)
中,可以反转数字<代码>字符串反向EnumKeeper()帮助您保留新的反向号码。使用for循环,可以反转数字123=>321。然后,您应该检查新的反转字符串是否有负号,如果有,您应该将其添加到数字前面,否则,只返回新的反转数字

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);
        }

    }

}
如前所述,您可以使用
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
您可能会注意到这里有两种输入方法,但只有一种方法可以为您提供所需的正确输出


第一种方法是使用
字符串
。这提供了预期的输出。第二种方法使用
int
不能提供预期的输出。这是因为int不会存储前导零。类似地,如果您试图输入一个前导为零的整数,实际上可以将其转换为八进制。要避免这种情况,可以使用
(int)D
(int)F
。请参见代码中的示例

到目前为止您尝试了什么?您的具体编程问题是什么?
String s=new StringBuilder(“00360”).reverse().toString().replaceFirst(“^[0]+”)
另一个问题,@Dan如果我使用字符串反转符号,我将如何保留符号?U将使用某种循环(例如,while…)和if语句来解决它。这样,我的输出中也将有尾随的零。我只需要前导零,例如“-0360”->“-0630”,但我需要“-360”@anmolhans,您在帖子中提到:例如“-00360”应该是“-6300”。我编写的代码也输出-6300<代码>输入编号
-0360
-630