Тренируюсь и сделал вот такой небольшой пример:
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);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я хочу сделать метод у которого есть параметр, который может принимать одно из трёх значений, причем если его не задавать, то одно из трёх...
Так же будет хорошо, если поделитесь инфой, о том что желательно установить на mac, для комфортного автоматизированного тестирования api
Каким способом можно перехватить звонок на Android, и перенаправить его на ПК, нашел как позвонить с помощью своего приложения, но нужно что бы звук...
Есть Spring Boot Web приложение которое использует Java VK SDKАвторизация в приложение происходит по клику на ссылку: