Hej,
próbuję napisać prosty program działający na zasadzie pilota do telewizora. Robię jeszcze sporo błędów i estetyczność kodu jest jaka jest. Chciałbym poprosić o pomoc w jego optymalizacji i naprawieniu jego obecnych błędów.
Program miałby działać w następujący sposób : Po wydaniu polecenia (wpisaniu) telewizor powinien się włączyć. Pilot powinien mieć możliwość przełączania między dziewięcioma zapętlonymi kanałami za pomocą przycisków typu "channel +", "channel -". Powinien mieć też możliwość zmiany głośności w przedziale 1-15,za pomocą podobnych przycisków jak w przypadku zmiany kanału (ale bez zapętlania). Wyłączenie telewizora powinno kończyć pracę programu.
Jak dotychczas mój kod wygląda tak:
klasa TV
public static void main(String[] args) {
Remote remote = new Remote();
remote.onOff();
}
}
klasa Remote
import java.util.Scanner;
public class Remote{
boolean onOff = false;
int channel = 0;
int volume = 1;
public Scanner scanner =new Scanner(System.in);
public void onOff(){
System.out.println("TV is off");
String turning =scanner.next();
if(turning.equals("off"))
onOff = false;
System.out.println("TV is off");
if (turning.equals("on")) {
onOff = true;
System.out.println("TV is on");
}
while (onOff){
System.out.println("TV działa. Co chcesz teraz zrobić?\n" +
"Masz do dyspozycji 9 kanałów i głośność w przedziale 1-15.\n" +
"Kanały możesz zmieniać za pomocą polecenia 'chup' oraz 'chdn', \n" +
"głośność natomiast za pomocą 'vup' i 'vdn'.\n" +
"Możesz wyłączyć TV przy pomocy 'off'");
String choose = scanner.next();
while (choose!=("off")){
switch (choose) {
case "chup":
if (choose.equals("chup"))
for (int i = 0; i < 9; i++) {
channel = channel++;
}
case "chdn":
if (choose.equals("chdn"))
for (int i = 0; i < 9; i--) {
channel = channel--;
}
case "vup":
if (choose.equals("vup"))
for (int i = 1; i < 15; i++) {
volume = volume++;
}
case "vdn":
if (choose.equals("vdn"))
for (int i = 1; i < 15; i++) {
volume = volume--;
}
}
System.out.println("Obecny kanał to "+ channel + "\n Obecna głośność to "+ volume);
break;
}
}
}
}
Program program włącza telewizor, ale informacja o tym nie wyświetla się do końca poprawnie.
Pętla odpowiedzialna za kanały i głośność wykonuje się tylko jeden raz. Kanały również wiem, że w tej formie nie będą przełączać się w sposób zapętlony.
Jeśli ktoś by mi pomógł w naprawie tych błędów i wyjaśnieniu co zrobiłem źle, to będę wdzięczny ;)
java switch
'a na co dzień w większości projektów, czy to raczej osobiste preferencje? ;)