Witam
Dostałem zadanie napisania swojego pierwszego programu i oczywiście mam z nim trochę problemów.
Poniżej zamieszczam treść zadania
area [figura] [dane wejściowe], czyli area square 2 wyświetli pole dla kwadratu o boku 2.
- Analogicznie area rectangle 2 4 spowoduje obliczenie pola prostokąta o bokach 2 i 4.
- Komenda showall wypisuje zawartość bufora na ekran w formie:
[data i godzina operacji]: [figura] [pole]- Poza komendami area oraz showall aplikacja ma umożliwiać
- Wyświetlenie powitania „Welcome to Area Calculator. Enter command.” poprzez wydanie komendy hello
- Zakończenie pracy poprzez wydanie komendy exit
- W przyszłości system może zostać potencjalnie rozbudowany o kolejne komendy, np. saveall oraz procedurę liczenia obwodu figury geometrycznej. Zaplanuje architekturę rozwiązania w taki sposób aby spełnienie tych wymagań nie wymagało nadmiernych nakładów pracy.
Chciałem wykorzystać HashMap, ale wtedy po wpisaniu "default" wywala mi błąd (nie wiem dlaczego) dlatego zrobiłem to trochę łopatologicznie.
Wyłożyłem się również na opcji showall, nie wiem czy struktura powinna być inna do jej wykorzystania? Czy może nie znalazłem odpowiedniej funkcji.
public static void main(String[] args) {
/* HashMap<String, Integer> commands = new HashMap<String, Integer>();
commands.put("hello", 1);
commands.put("area", 2);
commands.put("showall", 3);
commands.put("exit", 4);
*/
boolean ok = true;
Scanner s = new Scanner(System.in);
while (ok) {
System.out.print("calculator > ");
String commandString = s.nextLine();
switch(commandString)
{
case "hello":
System.out.println("Welcome to Area Calculator. Enter command.");
break;
case "area":
System.out.println("Podaj figure");
Scanner scan = new Scanner(System.in);
String figura= scan.nextLine();
switch(figura)
{
case "square":
double a;
Scanner bok = new Scanner(System.in);
System.out.println("podaj dlugosc boku a");
a = bok.nextDouble();
System.out.println("area = "+a*a);
break;
case "rectangle":
double b;
double c;
Scanner sciany = new Scanner(System.in);
System.out.println("podaj dlugosc boku b");
b = sciany.nextDouble();
System.out.println("podaj dlugosc boku c");
c = sciany.nextDouble();
System.out.println("area = "+b*c);
break;
case "circle":
double r;
Scanner promien = new Scanner(System.in);
System.out.println("podaj dlugosc promienia r");
r = promien.nextDouble();
System.out.println("area = "+(Math.PI)*r*r);
break;
}
break;
case "showall":
break;
case "exit":
System.exit(0);
default:
System.out.println("unknown command");
}
System.out.println("Command: " + commandString);
}
s.close();
}
}
Proszę o pomoc gdyż w tym momencie już bardziej z ciekawości chciałbym się dowiedzieć jak powinno być dobrze rozwiązane to zadanie.
Z góry dziękuję za wszelką pomoc.
pozdrawiam