Невозможно преобразовать int в строку в Java - PullRequest
0 голосов
/ 26 апреля 2018

Я получаю ошибку: cannot convert int to string in Java

Скрипт просто извлекает «скрытое» слово внутри строки, беря первые 2 буквы, среднюю букву и последние 2 буквы

Вот мой код:

package hello;
import java.util.*;
public class hello {
    public static String extract(String input) {
        if (input.length()>5) {
            int len = input.length();
            return input.charAt(0) + input.charAt(1) + input.charAt(len/2)+ input.charAt(len-2)+ input.charAt(len-1);
        }
    }
    public static void main(String[] args) {
        System.out.println("Enter a word:");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        String output = extract(input);
        System.out.println(output);     
    }
}

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Когда вы используете + между двумя символами, считается, что вы суммируете два целых числа, например:

'a' + 'b'

Эквивалентно:

97 + 98

В вашем случае вы можете использовать String.copyValueOf для создания строки из ваших символов.

return String.copyValueOf(new 
        char[] { 
                input.charAt(0), input.charAt(1), input.charAt(len / 2),
                input.charAt(len - 2), input.charAt(len - 1) 
        }
);

Это создаст строку из этих символов.

Ваш метод по-прежнему должен возвращать значение по умолчанию, если ваше условие неверно.

public static String extract(String input) {
    if (input.length() > 5) {
        int len = input.length();
        return String.copyValueOf(new 
                char[] { 
                        input.charAt(0), input.charAt(1), input.charAt(len / 2),
                        input.charAt(len - 2), input.charAt(len - 1) 
                }
        );
    }
    return "";//if the condition is wrong return empty string or null
}
0 голосов
/ 26 апреля 2018
return input.charAt(0) + input.charAt(1) + input.charAt(len/2)+ input.charAt(len-2)+ input.charAt(len-1)

char является типом int. Если вы сложите кучу символов, вы получите целое число, а не строку.

С другой стороны, если вы добавляете строку в символ или в другую строку, то они объединяются в другую строку:

return input.substring(0,2) + input.charAt(len/2) + input.substring(len-2);

Редактировать

Ваш метод в настоящее время возвращает только если input.length()>5. Если длина равна 5 или меньше, ваш метод не знает, что он должен вернуть, поэтому код не будет компилироваться.

Если вы знаете, что ваш метод должен вернуть в этом случае, добавьте дополнительный return после блока if.

public static String extract(String input) {
    int len = input.length();
    if (len >= 5) {
        return input.substring(0,2) + input.charAt(len/2) + input.substring(len-2);
    }
    return input; // must return something if the length was less than 5.
}

Кроме того, вы можете вызвать исключение, если ваша строка слишком короткая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...