Почему я не могу добавить символы в новую строку?

код:

String st = "abc";
String sl = st.charAt(0)+st.charAt(st.length()-1)); 

Вторая строка по какой-то причине неверна, и я не знаю, почему

На каком языке программа?

Andrej Kesely 09.04.2022 23:59

это Ява......

maya 10.04.2022 00:01
неправильно по какой-то причине, и я не знаю, почему - если вы не уточняете, что не так... как и никто, у вас есть ошибка, неожиданные результаты...?
Stu 10.04.2022 00:01

Я не знаю почему, я просто написал эти две строчки (скопировал из какой-то книги, а это значит, что все должно быть в порядке) и затмение говорит, что это неправильно.. но спасибо

maya 10.04.2022 00:04

Пожалуйста, предоставьте фактическую ошибку, которую дает вам затмение. Помните, что у нас гораздо меньше контекста, чем у вас по этому вопросу. Советы можно найти в Как спросить.

CollinD 10.04.2022 00:07

Сумма двух символов является числом, а не строкой.

Jaime 10.04.2022 00:11

вот что он говорит: «- Несоответствие типов: невозможно преобразовать из int в String»

maya 10.04.2022 00:12
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
0
7
48
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Книга неверна, а «Затмение» верно.

В Java вы можете написать "abc" + whatever или whatever + "abc", и это объединит строки, потому что одна сторона — это String.

Но в st.charAt(0)+st.charAt(st.length()-1)) ни одна из сторон не является String. Они оба chars. Так что Java не вернет вам String.

Вместо этого Java технически даст вам int. Вот подробные сведения из Спецификации языка Java, которая точно описывает, как работает Java:

  1. JLS 4.2 указывает, что char считается числовой тип.
  2. JLS 15.18.2 указывает, что + делает со значениями числовых типов.
  3. В частности, он указывает, что первое, что делается с ними, — это двоичное числовое продвижение, которое преобразует оба chars в int с помощью JLS 5.6.2. Затем он добавляет их, и результат по-прежнему остается int.

Чтобы получить то, что вы хотеть, возможно, самое простое решение - написать

String sl = st.charAt(0) + "" + st.charAt(st.length() - 1)); 

Поскольку charAt возвращает char [ int ]

используйте этот код:

String st = "abc";
StringBuilder str = new StringBuilder();
str.append(st.charAt(0));
str.append(st.charAt(st.length() - 1));
System.out.println(str.toString());

Метод append принимает символ или строку..

well this is what it says: "- Type mismatch: cannot convert from int to String"

Имея в виду именно то, что сказал @Jaime. Если я правильно помню, char технически представлен целочисленным значением. (т.е. «а» + 1 = «б»). Таким образом, вы добавляете два значения char, что не то же самое, что сложение двух строк вместе или даже объединение двух значений char. Одним из исправлений было бы использование String.valueOf(st.charAt(0)) + String.valueOf(st.charAt(st.length()-1))) для объединения двух значений char.

Другие вопросы по теме