#java #android
#java #Android
Вопрос:
Для строк..
Как я могу определить, содержит ли строка «name» текст «Привет», появится тост, говорящий «да», но если это не так, появится тост, говорящий «нет»? мой код:
String ft;
if(ft.contains("Hello")){
Toast.makeText(main.this ,"Yes", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(main.this ,"No", Toast.LENGTH_SHORT).show();
}
Я получаю сообщение об ошибке в ft при if(ft.содержит («Привет»)) {
«Возможно, локальная переменная ft не была инициализирована»
Комментарии:
1. Вы должны инициализировать
String
empty . попробуйтеString ft="";
2. Спасибо, Картик, это сработало, вопрос сохранится ли это, когда пользователь закроет приложение, и когда оно снова откроется, оно будет изменено на то, что я поставил?
3. Позвольте мне повторить, как я могу изменить строку на false после того, как они нажмут на мою кнопку?
4. вопрос сохранится ли это, когда пользователь закроет приложение, и когда оно снова откроется, оно будет изменено на то, что я поставил? — Нет, он будет уничтожен при выходе из приложения. Либо вы используете статическую строку, либо SharedPreferences(если они слишком важны для вас)
5. Да, это важно, мне это нужно, как я мог это сделать?
Ответ №1:
String text;
if(name.equals("Hello")){
text = "Yes";
} else {
text = "No";
}
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Вы также можете использовать сокращенное выражение вместо if
:
String text = name.equals("Hello") ? "Yes" : "No";
Комментарии:
1. Почему не все в одной строке? Toast.makeText(контекст, (имя.равно («Привет») ? «Да» : «Нет»), длительность).показать();
2. Строка ft; if(ft.равно(«Привет»)){ ft = «Да»; } else { ft = «Нет»; } я получаю сообщение об ошибке под ft в ft.равно «Локальная переменная ft, возможно, не была инициализирована»
3. Это вызовет ошибку во время компиляции… это неправильно.. Изначально «текст» должен иметь по крайней мере пустое строковое значение…
4. @Hailei:
name.equals("Hello")
не должно бытьft
5. Мое строковое имя — это FT, а не name
Ответ №2:
Вы объявили String
, но не инициализировали. Инициализация — это установка их равными значению:
String ft; // This is a declaration
String ft=""; // This is an initialization
Возможно String ft = "";
, это «объявление и инициализация.
Вы получаете ошибку, потому что вы не инициализировали переменную, но используете их (например, ft.compare() ) в условии if .
Поэтому попробуйте заменить String ft;
на String ft="";
Ответ №3:
if(name.contains("Hello")){
Toast.makeText(activity.this ,"Yes", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(activity.this ,"No", Toast.LENGTH_SHORT).show();
}
Обновлено:
String ft = "";
String ft= name.equals("Hello") ? "Yes" : "No";
Toast.makeText(activity.this ,ft, Toast.LENGTH_SHORT).show();
Комментарии:
1. Локальная переменная ft, возможно, не была инициализирована в if(ft.содержит
2. @HaileiEdwards: измените
String ft;
наString ft="";
илиString ft=null;
любые другие, которые лучше всего подходят в вашем случае.
Ответ №4:
if(name.equals("Hello")){
Toast.makeText(this, "Yes", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "no", Toast.LENGTH_LONG).show();
}