Тренируюсь и сделал вот такой небольшой пример:
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
char ch;
System.out.println("Введите данные в консоль: ");
ch = (char) System.in.read();
System.out.println(ch);
}
}
Программа считывает введенные данные с клавиатуры (1 символ) и выводит в консоль.
Стало интересно, и я захотел поменять char на String и посмотреть как всё будет работать:
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
String ch;
System.out.println("Введите данные в консоль: ");
String = (String) System.in.read();
System.out.println(ch);
}
}
Но идея выдала ошибку:
Inconvertible types; cannot cast 'int' to 'java.lang.String'
Я полез в гугл и нашел вот такую информацию:
Why this is not possible: Because String and Integer are not in
the same Object hierarchy.
Object
/ \
/ \
String Integer
The casting which you are trying, works only if they are in the same hierarchy, e.g.
Object
/
/
A
/
/
B
In this case, (A) objB or (Object) objB or (Object) objA will work.
Hence as others have mentioned already, to convert an integer to
string use: String.valueOf(integer), or Integer.toString(integer) for
primitive, or Integer.toString() for the object.
Далее я попробовал сделать вот так:
String = String.valueOf(ch) System.in.read(); //выдает ошибку: Variable 'ch' might not have been initialized
И вот так:
String = Integer.toString(ch) System.in.read();
Но ничего так и не заработало. Как мне правильно сделать и в чем проблема?
Integer.valueOf тут не поможет, так как будет возвращать код прочитанного символа в виде строки, а не строку из данного символа
Про вариант:
String = String.valueOf(ch) System.in.read();
В строке несколько ошибок:
= в данном случае должно быть название переменной. Если переменная уже существует (например, ch), то достаточно её названия. Если переменная только создаётся, то нужны тип + названиеvalueOf нужно брать от считанного значения (System.in.read()), а не от не инициализированной переменнойint. Если взять valueOf от числа, то вернётся текстовое представление числа. Поэтому нужно число привести к char, дабы строка формировалась из символаВ итоге если объединить объявление и инициализацию переменной, получается так:
String ch = String.valueOf((char)System.in.read());
Для чтения строк из консоли целиком удобно пользоваться Scanner-ом:
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
System.in.read() читает только один байт.
Для ввода текста нужно использовать сканнер System.in:
Scanner text = new Scanner(System.in);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости