Probleme bei Aufgabe

Hallo Leute,

ich soll für die Uni eine Aufgabe lösen, aber irgendwie scheitere ich alleine schon bei den Gegebenheiten bzw. der Umsetzung überhaupt.

Das hier ist der Aufgabentext:

Aufgabe
Bei dieser Aufgabe geht es darum ein rundes Beet anzulegen, wobei der Rand mittels Steinen ausgelegt und im Beet Rosen gepflanzt werden sollen. Ihr Programm erhält als Konsolenparameter in dieser Reihenfolge
  • die Anzahl an Steinen, welche auf einen Meter Länge passen sowie
  • die Anzahl an Rosen, welche auf einen Quadratmeter passen.
Sie können davon ausgehen, dass es sich dabei um ganze Zahlen handelt. Anschließend soll ihr Programm
  • eine ganze Zahl einlesen, welche dem Durchmesser des Kreises entspricht und
  • ausgeben wie viele Rosen im Beet gepflanzt werden können sowie
  • in einer neuen Zeile wie viele Steine benötigt werden.
Als Ausgabe können daher durchaus gebrochene Zahlen vorkommen!
Für die Berechnung benötigen Sie Pi. Verwenden Sie dazu den Wert 3.1415926 und deklarieren Sie Pi so, dass die Variable nicht mehr veränderbar ist.
Hinweise:
Da Sie Konsolenparameter (bzw. gleichbedeutend Kommandozeilenparameter) und das Einlesen von Zahlen noch nicht in der Vorlesung behandelt haben, ist dies im Rahmenprogramm bereits vorgegeben
Beispiel
Wenn pro Meter 8 Steine und pro Quadratmeter 4 Rosen hinpassen und als Durchmesser ein Wert von 2 eingelesen wurde, wäre die erwartete Ausgabe:

12.5663704
50.2654816

Der erste Wert gibt die Anzahl an Rosen und der zweite Wert die Anzahl an Steinen an, wobei wir das Aufrunden dem Benutzer überlassen.
Der gegebene Code sieht folgendermaßen aus:

Java:
import java.io.*;
public class Beet {
    public static void main(String[] args) throws IOException {
        final double PI = 3.1415926;
        int steineProMeter = Integer.parseInt(args[0]);
        int rosenProQuadratmeter = Integer.parseInt(args[1]);
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int durchmesser = Integer.parseInt(in.readLine());
        double flaeche, umfang;
        // ...
        
    }
}

Ich finde hier nicht mal einen Ansatz, hauptsächlich weil ich den gegebenen Code schon irgendwie nicht ganz überblicke.
Im Aufgabenkommentar wird erwähnt, dass der Input schon vorgegeben ist, allerdings fehlt mir allein schon da der Einblick, wieso denn kein Input abgefragt wird.
Vielleicht kann mich jemand erleuchten.

Ich brauche und möchte auch keine Lösung hier, sondern lieber ein paar Gedanken einer anderen Perspektive, die mich aus meiner Sackgasse holen.

Vielen lieben Dank
 
hauptsächlich weil ich den gegebenen Code schon irgendwie nicht ganz überblicke.
Im Aufgabenkommentar wird erwähnt, dass der Input schon vorgegeben ist, allerdings fehlt mir allein schon da der Einblick, wieso denn kein Input abgefragt wird.
Der Input wird abgefragt und zwar hier:
Java:
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int durchmesser = Integer.parseInt(in.readLine());
System.in ist ein InputStream, der von der Standardeingabe (z. B. die Konsole) liest. Der Reader außenrum dient nur dazu, einfacher zeilenweise einlesen zu können. Mit in.readLine() wird also die nächste Zeile von der Standardeingabe gelesen, die wird als int geparsed und der Wert wird der Variablen durchmesser zugewiesen.
 
Der Input wird abgefragt und zwar hier:
Java:
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int durchmesser = Integer.parseInt(in.readLine());
System.in ist ein InputStream, der von der Standardeingabe (z. B. die Konsole) liest. Der Reader außenrum dient nur dazu, einfacher zeilenweise einlesen zu können. Mit in.readLine() wird also die nächste Zeile von der Standardeingabe gelesen, die wird als int geparsed und der Wert wird der Variablen durchmesser zugewiesen.
Aber wenn ich das schon vorgegebene Programm ausführe, kann ich keinen Input eingeben. Bin mir ziemlich sicher das mein Fehler im eigenen Unvermögen liegt.
 
Du schreibst nicht, was passiert. Bekommst Du eine IndexOutOfBoundsException beim Zugriff auf args[0]?

Das Array args welches der Parameter von main ist, bekommt die Parameter übergeben. So muss das Programm mit zwei Parametern gestartet werden, wie es ja in der Aufgabe beschrieben wurde...

Wenn es das nicht ist, dann schreib, was Du genau machst und was Du bekommst...
 
Um es noch etwas zu erläutern:
Java:
    public static void main(String[] args) throws IOException { // in main() wird ein Stringarray "args" übergeben
        // ..
        int steineProMeter = Integer.parseInt(args[0]); // aus dem übergebenen Array den Parameter mit Index 0 auslesen und als int in steineProMeter speichern 
        int rosenProQuadratmeter = Integer.parseInt(args[1]); // dito nur mit Parameterindex 1
Da hier immer auf zwei bestimmte Indexpositionen von args zugegriffen wird, muss args auch mindestens zwei Strings als Inhalt haben. Da es sich um die Aufrufparameter handelt, musst du, wie @mihe7 vorschlägt auch mindestens zwei (als Integerwert interpretierbare) Parameter beim Aufruf angeben.
 
Du hast meine vorherige Antwort gelesen?
Das Array args welches der Parameter von main ist, bekommt die Parameter übergeben. So muss das Programm mit zwei Parametern gestartet werden, wie es ja in der Aufgabe beschrieben wurde...
==> Also schau Dir noch einmal an, wie die Übergabe von (Kommandozeilen-) Parametern funktioniert bei Java.

Speziell auf Eclipse bezogen ist evtl. https://www.cs.colostate.edu/helpdocs/cmd.pdf oder https://www.codejava.net/ides/eclipse/how-to-pass-arguments-when-running-a-java-program-in-eclipse hilfreich.
 
Du hast meine vorherige Antwort gelesen?


==> Also schau Dir noch einmal an, wie die Übergabe von (Kommandozeilen-) Parametern funktioniert bei Java.

Speziell auf Eclipse bezogen ist evtl. https://www.cs.colostate.edu/helpdocs/cmd.pdf oder https://www.codejava.net/ides/eclipse/how-to-pass-arguments-when-running-a-java-program-in-eclipse hilfreich.
Danke dafür, für Ecplise hab ich somit rausgekriegt was du meintest. Den Rest werde ich mir ergooglen (was ich wohl mit etwas Geist auch eher hätte hinkriegen können - aber mir war ja das Problem an sich völlig fremd.)


Was denkst du, was das bewirkt?

args[8]
Ich dachte, dass ich dem steineProMeter den Parameter 8 gebe. Allerdings stellte sich das als falsch raus

---
 
Beim nochmaligen lesen der Aufgabe mit den von euch gegebenen Informationen schäme ich mich fast wie blind ich gewesen bin. ^^
Das ist in meinen Augen etwas Normales und kein Grund sich zu schämen. Manchmal verrennt man sich in Gedanken und dann sieht man naheliegende Dinge nicht. Ich glaube, dass dies fast Alle kennen und wo es dann immer super ist, so etwas beiseite zu legen und erst einmal etwas anderes zu machen ehe man dann einen neuen Anlauf startet.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben