2014-12-02 5 views
-3

Я просто хочу спросить, как я могу написать в java этот пример.Меньше, чем x и больше, чем у

case 1: 
    if (mark == 1) { 
     System.out.println("You can't pass test"); 
    }  
    break; 
case 2: 
    if (mark > 1) { 
     System.out.println("You can pass test"); 
    } 

Но максимальная отметка 5, поэтому, если кто-то поставил 6 приложений, предположим сказать «ОШИБКА». Как я могу его исправить?

+4

Вы ищете '&&' – SLaks

+6

Этот вопрос не соответствует теме, потому что речь идет о самых основах языка – njzk2

ответ

1

Вы должны были бы сделать & & в ваших если заявления.

if(mark ==1) { 

} 

и

if(mark > 1 && mark <=5) { 
} 

Это при условии, что максимальная отметка в том числе пять.

+0

@ Тому, кого вы знаете, иногда это маленькие глупые вещи, которые мне не хватает, что заставляет меня чувствовать как гигантский идиот. Я обвиняю вас в том, что хочу быстро ответить. – CBredlow

+0

Не беспокойтесь. Это случается иногда :). – Tom

+0

@Tom Вы полностью пропустили [Один из пик] (http://stackoverflow.com/questions/27237325/how-do-you-convert-from-a-string-to-an-int-in-java/ 27237393 # comment42951379_27237393) – CBredlow

2

Чтобы проверить, что i меньше, чем х и больше, чем у. Что-то вроде

if (i > y && i < x) 

или с помощью De Morgan's laws

if (!(i <= y || i >= x)) 
2

В некоторых случаях ваши случаи, и если тесты кажутся такими, что они проверяют одно и то же, это сбивает с толку, потому что весь оператор switch не показан. Если оператор switch также использует метку, то тестирование с обоих случаев и утверждение if выглядят излишними.

Если вы ищете, как проверить диапазон с помощью переключателя, вот пример. В коммутаторе вы можете позволить случаи проваливается (не добавляя перерыв), если вы хотите, чтобы они имели один и тот же эффект:

switch (mark) { 
    case 1: { 
     System.out.println("you can't pass test"); 
     break; 
    } 
    case 2: 
    case 3: 
    case 4: 
    case 5: { 
     System.out.println("You can pass test"); 
     break; 
    } 
    default: { 
     System.out.println(mark > 5 ? "too high" : " too low"); 
     break; 
    } 
} 

, хотя, если заявление, вероятно, лучше работать здесь:

if (mark >= 2 && mark <= 5) { 
    System.out.println("You can pass test"); 
} else if (mark < 2){ 
    System.out.println("You can't pass test"); 
} else { 
    System.out.println("ERROR"); 
} 
0
if (mark >= 0 && mark<= 5) { 
    if(mark<=1){ 
     System.out.println("You can't pass test"); 
    }else{ 
     System.out.println("You can pass test"); 
    } 
}else{ 
    System.out.println("Error"); 
} 
+0

Что бы ваш первый код показывал, если 'mark' is' 2'? – Tom

+0

Спасибо Tom :) меньше/больше :) – Laky

0

Refactor:

void testPass() 
{ 
System.out.println("You can pass test"); 
} 

void testFail() 
{ 
System.out.println("You can't pass test"); 
} 

void testError() 
{ 
//some code to do error processing 
} 

void someMethod(int marks) 
{ 
//somecode 
    check_block: 
    { 
     if (marks > 5) 
     { 
      testError(); 
      break check_block; 
     } 
     if(marks > 1) 
     { 
      testPass(): 
      break check_block; 
     } 
     testFail(); 
    } 
    //some code 

} 

пытаются избежать выключателя. Надеюсь, что это помогает

0

Рассмотрите возможность использования бизнес-объекта вместо базового типа (INT в данном случае):

class Mark { 
    private final int value; 
    public Mark(int value) { 
     if (value < 1) { 
      throw new IllegalArgumentException("Value " + value + " too small"); 
     } else if (value > 5) { 
      throw new IllegalArgumentException("Value " + value + " too large"); 
     } 
     this.value = value; 
    } 
    public boolean isPassing() { 
     return value > 1; 
    } 
    public int getValue() { 
     return value; 
    } 
} 

в главном корпусе приложения

try { 
    Mark mark = new Mark(value); 
    System.out.println("You "+(mark.isPassing()?"can":"can't")+" pass test"); 
} catch (IlleagalArgumentException e) { 
    System.out.println("Error: " + e.getMessage()); 
} 

Реальное преимущество заключается в том что по мере роста вашего приложения вы можете передавать экземпляры Mark, и вам нужно только беспокоиться об условиях ошибки при преобразовании ints в Marks.