如何在没有内置 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);