[英]keep leading zeros only while reversing a number in java
我正在做我的分配問題,它是“反轉數字保留前導零,除去尾隨零也保持原樣”。
如果我將其取為整數,則將刪除前導和尾隨的零,如果我將其取為字符串,則將保留所有零。 誰能幫我只保留前導零。
例如,“-00360”應為“ -6300”。
問題-
編寫Java函數以接受數字並返回相同的數字。 如果數字以一個或多個零結尾,則在反向數字中將不存在這些零(因為這些零成為前導零)。 如果輸入數字為負,則應保留符號。 ##示例輸入:-123輸出:-321輸入:1123400輸出:43211
在以下代碼中,您可以反轉負數和正數。 在方法reversedString(String num)
,您可以反轉您的數字。 String reverseNumKeeper()
可幫助您保留新的反向編號。 通過使用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);
}
}
}
正如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>D
或(int)<int>F
請參閱代碼中的示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.