2013-04-29 4 views
-1

Я делаю эти викторины онлайн с CodingBat.com. Вот что задает мне вопрос:Возвращение наибольшего из трех целых чисел в Java

Приведенные три значения int a, b, c return the most.

intMax(1, 2, 3) → 3 
intMax(1, 3, 2) → 3 
intMax(3, 2, 1) → 3 

Так я создал этот код и проверить результаты.

public int intMax(int a, int b, int c) { 
    if(a>b || a>c){ 
    return a; 
    } 
    if(b > a|| b>c){ 
    return b; 
    } 
    else{ 
    return c; 
    } 
} 

Результаты показали, что мой код не работает для всех случаев (хотя и делает для большинства), а код учитель был различен.

Почему этот код не работает?

+1

Вы используете OR '' ||, что не соответствует логике. Вы должны использовать AND '&&' здесь. – nhahtdh

+2

Действительно. Рассмотрим a = 2, b = 3, c = 1 ... –

ответ

2

Что вы сделали:

if(a>b || a>c){ 
    return a; 
    } 

Что делать, если a>b но не >c ?? там вы поступили не так.

Вы должны использовать if(a>b && a>c) (&& вместо ||).

+0

О, вау ... Делает полный смысл. Хе-хе, простите, что сейчас кажется глупым вопросом. Просмотрите эти операторы! Благодаря! – LearnIT

+0

Добро пожаловать :) – Parth

0

if(a>b || a>c) считается истинным, если a> b ИЛИ a> c. Поскольку вы хотите только вернуть значение, которое является самым высоким из всех, вы хотите &&, что означает И вместо ||, что означает ИЛИ.

0

Для этого воспользуйтесь оператором &&.

Потому что ваше состояние становится истинным в ложном состоянии.

Для экс:

Вход: [5,9,2]

if(a>b || a>c){ 
    return a; 

Это даст выход 5 вместо 9.

Таким образом, используйте оператор &&.

if(a>b && a>c){ 
    return a; 
} 
if(b > a && b>c){ 
    return b; 
} 
else{ 
    return c; 
} 
0

Используйте && оператор вместо ||

+0

Я не понимаю, когда вы говорите: это не дает ответа. –

Смежные вопросы