как удалить из списка из поля со списком

#java

#java

Вопрос:

При попытке написать следующий код выдает 3 ошибки. Синтаксическая ошибка в токене ‘else’, вставьте ‘выражение assignmentoperator’ для завершения присваивания и не удается преобразовать из строки в логическое значение. Это для поля со списком, и когда я выбираю из поля со списком, я хочу удалить другие сайты из списка. ‘site’ — это переменная в main и c.site — это параметр в другом агенте. Может кто-нибудь объяснить, что делать.

 if ( site ) {
    if ( c.site.equals( "x" ) ) {
        cavernIterator.remove();
        continue;
    }
}
else {
    if ( c.site.equals( "y" ) ) {
    cavernIterator.remove();
    continue;
    }
}
else {
    if ( c.site.equals( "z" ) ) {
        cavernIterator.remove();
        continue;
        }
    }
else {
    ( c.site.equals( "a" ) ) {
    cavernIterator.remove();
    continue;
    }
}
  

Комментарии:

1. Можете ли вы предоставить сайт. System.out.println(«Site: » сайт);

Ответ №1:

У вас не может быть нескольких else блоков для одного и того же if . Каждый else блок должен быть присоединен к своему if :

 if(a) {
    ...
} else {
    if (b) {
        ...
    }
    else {
        if (c) {
            ...
        }
        else {
            ...
        }
    }
}
  

Или, сокращенно для всего этого, вы можете иметь блок с одним оператором внутри else , чтобы он выглядел так:

 if (a) {
    ...
}
else if (b) {
    ...
}
else if (c) {
    ...
}
else {
    ...
}
  

Этот второй вариант почти такой же, как и первый, поскольку он использует преимущество отсутствия необходимости заключать блок оператора в фигурные скобки, если ваш блок оператора содержит только один оператор, например:

 if (myCondition)
    System.out.println("My condition passed");
else
    System.out.println("My condition did not pass");
  

Ответ №2:

Остальное, если должно быть написано таким образом :

 if (...) {
    // Code here
} else if (...) {
    // Code here
} else {
    // Code here
}
  

Также ваши случаи кажутся похожими

 String[] sites = {"x","y","z","a"};
boolean contains = Arrays.stream(sites).anyMatch(c.site::equals);
if (contains) {
    cavernIterator.remove();
    continue;
}
  

РЕДАКТИРОВАТЬ: Учитывая, что сайт является строкой

 String site = "x"; // Default value provided
String[] sites = {"x","y","z","a"};
boolean condition = site.equals(c.site) amp;amp; Arrays.stream(sites).anyMatch(c.site::equals);
if (condition) {
    cavernIterator.remove();
    continue;
}
  

Комментарии:

1. Второй код удаляет все из списка. Я просто хочу удалить остальные 3, когда выбран 1. В первом коде все еще говорится, что невозможно преобразовать строку в логическое значение

2. @Flygerian if (сайт) … site — это строка, которая не может быть преобразована в логическое

3. @Flygerian .remove(), безусловно, является причиной удаления всего из списка 😉

4. что я должен написать вместо этого, или я должен изменить параметр или переменную]

5. итак, поле со списком должно быть связано с переменной в main, так что это сайт. Таким образом, ‘if (site)’ должен связать переменную site с параметром site. Или есть другой способ сделать это

Ответ №3:

     if ( site ) {
        if ( c.site.equals( "x" ) ) {
        }
   }
  

равно

     if(site amp;amp; c.site.equals("x")){
    }
  

И ваше последнее еще перепутано.

Вероятно, посмотрите некоторые руководства по Java, потому что вы пишете наименее эффективный способ. Короче говоря, это ваш код:

 if (site amp;amp; (c.site.equals("x") || c.site.equals("y") || c.site.equals("z") || c.site.equals("a"))) {
    cavernIterator.remove();
}
  

Комментарии:

1. В вашем коде появляется ошибка «оператор amp;amp; не определен для типа (ов) аргумента String, boolean»

2. @Flygerian как упоминалось выше, если site является строкой, его нельзя сравнить с помощью amp;amp;

3. тогда каким должен быть сайт

4. В зависимости от того, что вы хотите использовать, логическое значение, строку, любой объект… Каково ваше условие if? если (site != null) ? если (!site.equals(«a»)) ?

5. Я хочу, чтобы это была строка, как это есть. мое условие if — если это сайт, я хочу удалить другие сайты