如何在没有内置 Java 方法的情况下将整数转换为字符串?
How to convert an integer to a String without buildin Java methods?
我正在准备面试,遇到了这个问题:
Write an algorithm that converts integer to String without using
ready-made implementations?
我们可以使用模提取单个数字,然后在连接中使用类型转换 (java),如下所示:
int inputNumber = 145;
int modifiedNumber = inputNumber;
String convertedNumber = "";
int lastDigit;
while (modifiedNumber != 0) {
lastDigit = modifiedNumber % 10;
convertedNumber = lastDigit + convertedNumber ;
modifiedNumber /= 10;
}
System.out.println("Converted number is: " + convertedNumber);
问题:如何将单个数字转换为字符串,但没有使用将数字连接到字符串的隐式类型转换?可以使用 Java 语言吗?
试试这个:
int inputNumber=1234;
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(inputNumber);
String strI = sb.toString();
关于 OP 的代码,我唯一要更改的是使用 StringBuilder 而不是进行所有重复的连接。
public String convert(int n) {
if (n == 0)
return "0";
StringBuilder sb = new StringBuilder();
int zero = (int)'0';
while (n > 0) {
sb.insert(0, (char)(zero + (n % 10)));
n = n / 10;
}
return sb.toString();
}
@Test
public void testConvert() {
assertEquals("123", convert(123));
assertEquals("1230", convert(1230));
assertEquals("12301", convert(12301));
assertEquals("1230123", convert(1230123));
assertEquals("0", convert(0));
}
你可以做到:
int myNumber1 = 125;
int myNumber2 = 265;
int myNumber3 = 563;
String numberAsString1 = myNumber1 + "";
String numberAsString2 = String.valueOf(myNumber2);
String numberAsString3 = ((Integer) myNumber3 ).toString();
如果您想避免任何数字到字符串类型的转换,并且不允许使用内置函数,我认为选项可以是 switch 语句或数组。
String[] digits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
int inputNumber=1234;
String convertedNumber = "";
for(int n=inputNumber; n>0; n/=10)
convertedNumber = digits[n % 10] + convertedNumber;
System.out.println(convertedNumber);
我正在准备面试,遇到了这个问题:
Write an algorithm that converts integer to String without using ready-made implementations?
我们可以使用模提取单个数字,然后在连接中使用类型转换 (java),如下所示:
int inputNumber = 145;
int modifiedNumber = inputNumber;
String convertedNumber = "";
int lastDigit;
while (modifiedNumber != 0) {
lastDigit = modifiedNumber % 10;
convertedNumber = lastDigit + convertedNumber ;
modifiedNumber /= 10;
}
System.out.println("Converted number is: " + convertedNumber);
问题:如何将单个数字转换为字符串,但没有使用将数字连接到字符串的隐式类型转换?可以使用 Java 语言吗?
试试这个:
int inputNumber=1234;
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(inputNumber);
String strI = sb.toString();
关于 OP 的代码,我唯一要更改的是使用 StringBuilder 而不是进行所有重复的连接。
public String convert(int n) {
if (n == 0)
return "0";
StringBuilder sb = new StringBuilder();
int zero = (int)'0';
while (n > 0) {
sb.insert(0, (char)(zero + (n % 10)));
n = n / 10;
}
return sb.toString();
}
@Test
public void testConvert() {
assertEquals("123", convert(123));
assertEquals("1230", convert(1230));
assertEquals("12301", convert(12301));
assertEquals("1230123", convert(1230123));
assertEquals("0", convert(0));
}
你可以做到:
int myNumber1 = 125;
int myNumber2 = 265;
int myNumber3 = 563;
String numberAsString1 = myNumber1 + "";
String numberAsString2 = String.valueOf(myNumber2);
String numberAsString3 = ((Integer) myNumber3 ).toString();
如果您想避免任何数字到字符串类型的转换,并且不允许使用内置函数,我认为选项可以是 switch 语句或数组。
String[] digits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
int inputNumber=1234;
String convertedNumber = "";
for(int n=inputNumber; n>0; n/=10)
convertedNumber = digits[n % 10] + convertedNumber;
System.out.println(convertedNumber);