Строки Android Java

#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();
}