2014-10-07 4 views
0

Я хочу создать небольшую программу, которая сначала запросит два номера, проверит, хороши они или нет, используя метод, а затем, после последнего номера, распечатывает результат метода , (да, вы побеждаете, вы не проигрываете).Java public static boolean method

Я сравнивал это с другими вопросами здесь, но почему-то я не могу заставить его работать. Я сделал счастливые числа внутри метода, вне метода, даже купил «Большая Ява», но я застрял на этом сейчас.

Помощь была бы очень признательна!

package wtf; 

import Java.util.Scanner; 
/** 
* 
* @author Darl 
*/ 
public class WTF { 
public static int luckyNumber; 
public static int secondLuckyNumber; 
/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

    Scanner sc = new Scanner(System.in); 
    System.out.println("Give me a number between 0 and 100 to win a prize. "); 
    luckyNumber = sc.nextInt(); 

    System.out.println("Give me another number between 100 and 200."); 
    secondLuckyNumber = sc.nextInt(); 

} 

public static boolean hasLuckyNumber(int luckyNumber, int min, int max){ 
    min = 20; //all winning tickets from 20 till 60 
    max = 60; 
    if (luckyNumber > min || luckyNumber < max) { 
     System.out.println("Unfortunatly, no prize"); 
    }else{ 
     System.out.println("You've got a prize!"); 
    } 
} 

public static boolean hasSecondLuckyNumber(int secondLuckyNumber, int min, int max){ 
    min = 140; // all winning tickets from 140 till 175 
    max = 175; 
    if (secondLuckyNumber > min || secondLuckyNumber < max){ 
     System.out.println("Sad face"); 
    }else{ 
     System.out.println("We've got a winner!"); 
    } 
    } 
} 
+3

Итак, каков ваш вопрос? – Mena

+0

Обратите внимание, что покупка книги не только дает вам знания. Как вы думаете, что делает ваша программа? Почему вы не можете заставить его делать то, что хотите? –

+2

* Я не могу заставить его работать * - Что должна делать ваша программа? Что это на самом деле? Какие ошибки (если есть) вы получаете при запуске? – azurefrog

ответ

0

Вы получаете ошибки компиляции, потому что вы не возвращаете логические значения из своих методов?

public static boolean hasSecondLuckyNumber(int secondLuckyNumber, int min, int max){ 
    min = 140; // all winning tickets from 140 till 175 
    max = 175; 
    if (secondLuckyNumber > min || secondLuckyNumber < max){ 
     System.out.println("Sad face"); 
     return false; 
    }else{ 
     System.out.println("We've got a winner!"); 
     return true; 
    } 
    return false; 
} 

возможно? похоже, что вам не нужно логическое, поскольку вы используете консоль для записи, если вы выиграете или проиграете.

2

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

Во-вторых, вы не называете методы в любом месте кода, поэтому ничего не произойдет.

* Обратите внимание, что в параметрах min/max нет необходимости инициализировать их внутри функции.

1

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

(luckyNumber > min || luckyNumber < max) 

должен быть таким:

(luckyNumber > min && luckyNumber < max) 

Кроме того же для:

secondLuckyNumber > min || secondLuckyNumber < max 

Должно быть:

secondLuckyNumber > min && secondLuckyNumber < max 

С || значение, большее, чем max, вернет true, потому что первое утверждение luckynumber > min вернет true. Замена этого с && только возвращает истину, если luckynumber больше, чем min и менее max

2

Для методов hasLuckyNumber (...) и hasSecondLuckyNumber (...), вы должны возвращать логическое значение, либо истинно или false. Затем внутри main вы должны изменить свою реализацию.

public static void main(String[] args) { 

    Scanner sc = new Scanner(System.in); 
    System.out.println("Give me a number between 0 and 100 to win a prize. "); 
    luckyNumber = sc.nextInt(); 

    if(hasLuckyNumber(luckyNumber)) { 
     System.out.println("Give me another number between 100 and 200."); 
     secondLuckyNumber = sc.nextInt(); 

     if(hasSecondLuckyNumber(secondLuckyNumber)) { 
     System.out.println("We've got a winner!"); 
     } 
     else { 
     System.out.println("Sad face"); 
     } 
    } 
    else { 
    System.out.println("Unfortunatly, no prize"); 
    } 

} 

public static boolean hasSecondLuckyNumber(int secondLuckyNumber){ 
    if (secondLuckyNumber > 140 || secondLuckyNumber < 175){ 
     return false; 
    } else{ 
     return true; 
    } 
} 

public static boolean hasLuckyNumber(int luckyNumber){ 
    if (luckyNumber > 20 && luckyNumber < 60) { 
     return true; 
    }else{ 
     return false; 
    } 
}