2017-02-22 7 views
-1

Вторая половина дня! У меня проблемы с моим логическим методом в классе «Телевидение». Все, что я в основном пытаюсь выполнить, - это когда этот метод вызывается, я хочу, чтобы значение powerStatus было переключено.Списки фактических и формальных методов различаются по длине

/** 
* @author Thomas Samuel 
* @version 1.0 
* @since 22/02/2017 
* <h1>Television Remote/Lab Sheet 2</h1> 
* <p1>The following program is made for a television remote to control power, channel information, and volume.</p1> 
*/ 
class Television { 
    Television Television = new Television(); 
    boolean powerStatus = false; 
    int currentChannel; 
    int currentVolume = 50; 
    boolean togglePower(boolean powerStatus) { 
     if(powerStatus = false) { 
      powerStatus = true; 
     } else if(powerStatus = true) { 
      powerStatus = false; 
     } 
     return powerStatus; 
    } 
    boolean getPowerStatus(boolean powerStatus) { 
    return powerStatus; 
    } 
} 
public class Controller { 
    public static void main(String[] args) { 
     Television.togglePower(); 
    } 
} 

ошибка я получаю следующим образом:

Controller.java:27: error: method togglePower in class Television cannot be applied to given types; 
     Television.togglePower(); 
       ^
    required: boolean 
    found: no arguments 
    reason: actual and formal argument lists differ in length 
1 error 
+0

у вас ** не передан ** аргумент 'boolean', когда вы вызываете метод togglePower. –

+1

'class Television {Телевизионное телевидение = новое телевидение(); ... 'Почему вы создаете экземпляр« Телевидение »как нестатический член? Почему вы называете переменную такой же, как и ее класс? Это оба показателя, что вы не поняли некоторые основополагающие принципы, и сделать ваш код очень трудным для чтения. Например, в вашем основном методе 'Television.togglePower();' выглядит как вызов статического метода, но это не так. Он работает только из-за перегрузки имени «Телевидение». –

+0

И в следующий раз вы получите сообщение о том, что нестатический метод не может ссылаться на статический контекст. –

ответ

1

Вы получите ошибку, потому что вы звоните togglePower без параметров, но этот метод ожидает параметр boolean.

Измените метод togglePower не принимать параметр, так как он уже владеет powerStatus переменным:

boolean togglePower() { 

     powerStatus = !powerStatus; 

     return powerStatus; 
    } 

Таким же образом, это не имеет никакого смысла для простого метода получения взять параметр, так что попробуйте:

boolean getPowerStatus() { 
     return powerStatus; 
    } 
0

Пожалуйста, изучите этот код внимательно, чтобы увидеть, что вам нужно изменить

class Television { 
    boolean powerStatus = false; 
    int currentChannel; 
    int currentVolume = 50; 
    boolean togglePower() { 
     powerStatus = !powerStatus; 
     return powerStatus; 
    } 
    boolean getPowerStatus() { 
     return powerStatus; 
    } 
} 
public class Controller { 
    public static void main(String[] args) { 
     Television tv = new Television(); 
     tv.togglePower(); 
     System.out.println(tv.getPowerStatus()); 
    } 
} 

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

+0

Ваш код не очень хорош. Ваш метод getPowerStatus в настоящее время возвращает значение, переданное методу, и ваш метод togglePower не переключает питание на телевизор. –

+0

Извините, но я забыл удалить ненужные параметры из объявлений метода. Исправлена. –

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