У меня есть два оператора «if» в моем коде, что я могу сделать, чтобы, если одно утверждение «if» истинно, другое автоматически игнорируется/отключается?Оператор if в JAVA
ответ
Таким образом, вы имеете следующее:
if(condition1){
block1;
}
if(condition2){
block2;
}else{
block3;
}
Чтобы отключить/игнорировать второй if
вы можете либо использовать else if
заявление:
if(condition1){
block1;
} else if(condition2){
block2;
}else{
block3;
}
Или оператор возврата после block1
if(condition1){
block1;
return;
}
if(condition2){
block2;
}else{
block3;
}
if(maxValY < 3)
{
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", 740,490);
p.drawString(aw,840,490);
p.drawString("Graph Height = ", 740,510);
String ah = String.valueOf(y1);
p.drawString(ah,846,510);
}
else
{ if (minValx == -1 || minValx == - 2 || minValx == - 3){
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", 740,90);
p.drawString(aw,840,90);
p.drawString("Graph Height = ", 740,110);
String ah = String.valueOf(y1);
p.drawString(ah,846,110);
}
else{
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", 50,90);
p.drawString(aw,150,90);
p.drawString("Graph Height = ", 50,110);
String ah = String.valueOf(y1);
p.drawString(ah,156,110);
}
}
Есть, по крайней мере, два ответа. Один из них - поставить оператор возврата в нижней части 1-го if
. Мне это не нравится, потому что это не может быть хорошим общим решением.
Другой ответ реструктуризировать ваш код немного ...
Во-первых, так как случай, где maxValX является> = 3, кажется, не быть там, где проблема заключается, я хотел бы получить, что из как путем изменения первого if
условную:
if (maxValY >= 3) {
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", 50, 90);
p.drawString(aw, 150, 90);
p.drawString("Graph Height = ", 50, 110);
String ah = String.valueOf(y1);
p.drawString(ah, 156, 110);
} else if (maxValY < 3) {
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", 740, 490);
p.drawString(aw, 840, 490);
p.drawString("Graph Height = ", 740, 510);
String ah = String.valueOf(y1);
p.drawString(ah, 846, 510);
}
if (minValx == -1 || minValx == -2 || minValx == -3) {
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", 740, 90);
p.drawString(aw, 840, 90);
p.drawString("Graph Height = ", 740, 110);
String ah = String.valueOf(y1);
p.drawString(ah, 846, 110);
}
Так что все, что произошло то, что я поставил «не дубликат, если заявление вопрос» на самом верху.
Теперь у нас есть два условия: один, который касается minValX
, и тот, который имеет дело с maxValY
. Но теперь мы замечаем, что содержимое каждого из них почти идентично. Мы решить эту проблему путем рефакторинга кода немного (и пробирается в еще ...):
if (maxValY >= 3) {
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", 50, 90);
p.drawString(aw, 150, 90);
p.drawString("Graph Height = ", 50, 110);
String ah = String.valueOf(y1);
p.drawString(ah, 156, 110);
} else if (maxValY < 3) {
q(491, 510);
} else if (minValx == -1 || minValx == -2 || minValx == -3) {
q(90, 110);
} else {
throw new RuntimeException("This cannot possibly happen ;-)");
}
}
private void q(int loc1, int loc2) {
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", 740, loc1);
p.drawString(aw, 840, loc1);
p.drawString("Graph Height = ", 740, loc2);
String ah = String.valueOf(y1);
p.drawString(ah, 846, loc2);
}
А потом мы замечаем, что кодовые блоки еще почти идентичны. Рефактор ...
private void someName() {
// ...
if (maxValY >= 3) {
q(50, 90, 510);
} else if (maxValY < 3) {
q(740, 490, 510);
} else if (minValx == -1 || minValx == -2 || minValx == -3) {
q(740, 90, 110);
} else {
throw new RuntimeException("This cannot possibly happen ;-)");
}
// ...
}
private void q(int base, int graphWidth, int graphHeight) {
p.setColor(Color.black);
//display the value of graph width and graph height
aw = String.valueOf(x1);
p.drawString("Graph Width = ", base, graphWidth);
p.drawString(aw, base+100, graphWidth);
p.drawString("Graph Height = ", base, graphHeight);
String ah = String.valueOf(y1);
p.drawString(ah, base+100+6, graphHeight);
}
Таким образом, мы видим, что все три раздела кода были в основном одинаковыми, за исключением некоторых констант. Реорганизовывая их, мы уменьшаем количество кода, который должен быть отлажен. Кроме того, мы ясно видим структуру заявления if
и отделили логику от фактической работы, что часто дает дополнительные дивиденды.
Вопрос OP состоит в том, как игнорировать второй оператор if, а не о повторной факторизации его кода. – GETah
@GETah Yep. И с этим решением OP получает то, что ему нужно, используя предпочтительную конструкцию, и, надеюсь, узнает немного больше, чем это. Начинающие часто задают неправильный вопрос, и это было здесь. –
- 1. Оператор if в Java
- 2. оператор if избыточен java
- 3. Преобразование инструкции if-else-if в оператор switch в java
- 4. оператор break в «if else» - java
- 5. Оператор IF и несколько условий в JAVA
- 6. Как написать этот оператор if в java
- 7. Оператор if внутри цикла for в Java
- 8. IF-оператор внутри ActionPerformed method в JAVA
- 9. Java: оператор if в бесконечном цикле
- 10. Оператор if дает нулевой результат в Java
- 11. Оператор if внутри оператора If
- 12. Условный оператор в if-statement?
- 13. Java Оператор IF (повышение эффективности алгоритма)
- 14. Оператор IF в VBA
- 15. Оператор IF в Excel
- 16. Оператор IF В ИНЕКЕ
- 17. Оператор if в переменной
- 18. Оператор if() в R
- 19. + !! оператор в выражении if
- 20. java if condition == false vs! Оператор
- 21. Оператор if, содержащий значения массива 2d java
- 22. Инициализация переменных Java и оператор if
- 23. Неопределенный оператор для функции if - Java
- 24. Java-вход, сканер и оператор if
- 25. Как исправить оператор if/else Java
- 26. Оператор Java IF, требующий нескольких входов
- 27. Оператор Java if для изменения значения переменной
- 28. Java IF оператор не выводит правильно
- 29. java: if инструкция, которая пропускает следующий оператор if
- 30. Оператор java if не работает внутри if (item instanceof nomclass)
читать «else», часть инструкции «if», которая выполняется, если условие ложно. –
Я знаю, что проблема в том, что существуют определенные условия, при которых оба утверждения «если» могут стать истинными. Поэтому у меня есть два условия, когда условия работы там одновременно ... Что вы думаете? – Matthew
Пожалуйста, внесите свой код. – Lee