Зачем добавлять пустую строку при добавлении строки с int? - PullRequest
0 голосов
/ 13 января 2020

В приведенном ниже примере, когда я не добавлял "" (пустую строку), вывод был в виде int, что довольно ненормально, поскольку добавление строки с целым числом всегда дает строку. Но как только я добавил пустую строку, код, казалось, работал нормально. В обоих случаях я добавлял строку из массива строк, который я создал ранее в коде.

import java.io.*;

public class TooLong{
    public static void main(String[] args)  throws IOException{
        InputStreamReader n = new InputStreamReader(System.in);
        BufferedReader input = new BufferedReader(n);
        byte i ;
        i=Byte.parseByte(input.readLine());
        String origWords[] = new String[i];
        for (int j=0;j<i;j++)   origWords[j]= input.readLine();
        for (int j=0;j<i;j++){

            int charLength = origWords[j].length(); 
            if (charLength < 11)    System.out.println(origWords[j]);
            else System.out.println(origWords[j].charAt(0) +""+ (charLength-2) + origWords[j].charAt(charLength-1) );
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 13 января 2020

Полагаю, вы пытаетесь добиться «интернационализации ⇒ i18n»

Это потому, что String.charAt(int) возвращает char. Который будет считаться числовым при использовании +. Используя + с пустой строкой, вы заставляете компилятор преобразовывать все в строку

. Вы можете использовать String.substring(0,1) вместо первого charAt для принудительного преобразования типа строки

1 голос
/ 13 января 2020

Метод charAt () в String возвращает символ. char - это один из примитивных типов данных. char является текстовым примитивом, однако он также может выполнять арифметические операции c, как числовые примитивы. Приведенные ниже коды являются примерами для этого:

 `public static void main(String args[]){
            String st = "i am a string";
            char c = st.charAt(0);
            System.out.println(c);
            System.out.println(c+ st.charAt(2));
            System.out.println(c+ "" + st.charAt(2));
        }

`

Результат приведенного выше кода будет:

 i
202
ia

Надеюсь, этот пример прояснит.

...