2015-03-29 3 views
-3

Я пытаюсь создать кусок кода, который будет;Как использовать логические операторы и возвращает

возвращает истину, если дано Int N, который с 10 по 100 или 200.

import java.util.Scanner; 
class nearHundred{ 
public boolean nearHundred(int n){ 



    Scanner input = new Scanner(System.in); 
    n = input.nextInt(); 

    if(10>=Math.abs(100-n) || 10>=Math.abs(200-n)){ 
     return true; 
    } 


    return false; 
    } 
} 

Где я не так?

+0

Что вы имеете в виду «пошло не так»? Что делать/не делает программа? – BlackHatSamurai

+1

Мне кажется. Maybr, вы перепутали, перезаписав переменную n своим следующим значением. – MQ87

+0

Почему вы передаете n в метод? он просто сбивается со второго утверждения метода. – Neilos

ответ

0

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

new nearHundred().nearHundred(100); // a call from main method 

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

Например,

public class Utils { 
    public static boolean isNearToHundered(int num) { 
     return Math.abs(num-100)<=10 || Math.abs(num-200)<=10; 
    } 
} 

Ответственность за основной метод анализа входных данных лежит на том, как он должен работать.

Теперь, так как я сделал метод static, вы можете назвать как

Utils.isNearToHundred(105); // TRUE 
-1

Вот как метод должен выглядеть:

public void mainMethod() { 
    Scanner input=new Scanner(System.in); 
    int val=input.nextInt(); 
    boolean nearHundredBoolean=nearHundred(val); 
    //do something with nearHundredBoolean.... 


    //Same logic, but passes the input to the method nearHundred 
    public boolean nearHundred(int n) { 
    if(Math.abs(100-n)<=10 || Math.abs(200-n)<=10) 
     return true; 
     else return false; 
     } 

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

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