Kommandozeilenparameter in andere Methode

tatra-bennl

Mitglied
Hallo,

ich habe folgende Frage:

ich habe in der main-Methode eine Variable N definiert, die als Kommandozeilenparameter übergeben wird.

int N = Integer.parseInt(args[0]);

Nun möchte ich dieses "N" in einer anderen Methode weiter verwenden.

Es geht darum, ein regelmäßiges N-Eck zu zeichnen, wobei die Anzahl der Ecken als Kommandozeilenparameter übergeben wird.

Danke im Voraus!
 

tatra-bennl

Mitglied
Hallo Gucky, danke für den Hinweis. Ich habe mich mit der Vererbung auseinandergesetzt. In diesem Fall zeigt mir Eclipse aber an, dass ich "args" nur in der Main-Methode verwenden kann.

Ich schreibe int N = Integer.parseInt(args[0]); in die Main-Methode und bekomme das N einfach nicht in die nächste Methode.

Hier der Code:
Java:
public static void main(String[] args)
 {
  // [...]

  int N = Integer.parseInt(args[0]);
  
  
 }
 public class Subklasse extends polygon_regelmaessig {
	 
 // ???? Das ist bestimmt nicht richtig...

 protected void Zeichnen ( Graphics g )
 {
  
  VertexDrawer.drawVertex( g, getWidth() / 2, getHeight() / 2, 60, N, false );
 }
}

[...] weiterer Code
 

Gucky

Top Contributor
Tut mir leid. So gerne ich dir das zeigen und erklären würde...da musst du selber drauf kommen.
Guck dir noch einmal die Grundlagen von Methodenaufrufen an. Du wirst die Erleuchtung schon noch erlangen.
 

Androbin

Bekanntes Mitglied
Tut mir leid. So gerne ich dir das zeigen und erklären würde...da musst du selber drauf kommen.
Guck dir noch einmal die Grundlagen von Methodenaufrufen an. Du wirst die Erleuchtung schon noch erlangen.
Ach', was soll's:
Java:
public static void main(String[] args)
 {
  // [...]

  int N = Integer.parseInt(args[0]);
  new Subklasse().Zeichnen( g, N );
  
 }
 public class Subklasse extends polygon_regelmaessig {
     
 // ???? Das ist bestimmt nicht richtig...

 protected void Zeichnen ( Graphics g, int N )
 {
  
  VertexDrawer.drawVertex( g, getWidth() / 2, getHeight() / 2, 60, N, false );
 }
}

[...] weiterer Code

Jetzt musst du dir nur noch überlegen, wie du an dein "Graphics g" kommst?
 

Natac

Bekanntes Mitglied
Wollte gerade nen Tipp geben, aber Androbin war schneller.

Daher nur eine (wichtige) Formalität:

Variablen werden in Java klein geschrieben, auch ein "N" -> "n". ;)
 

tatra-bennl

Mitglied
Vielen Dank!

So hatte ich es ganz am Anfang, jedoch ohne Subklasse. Das war also der Fehler...

Aber noch eine Frage:
hebe nun alles so gemacht und jetzt sagt Eclipse, dass die Methode "Zeichnen" nicht als statische Methode erklärt werden kann, was ja auch klar ist. Allerdings ergeben sich auch Fehlermeldungen, wenn ich sie als nicht statisch definiere. Wie kann ich das noch in den Griff bekommen?

Java:
import java.awt.*;
import javax.swing.*;

public class polygon_regelmaessig extends JPanel
{

 public static void main(String[] args )
 {
  JFrame f = new JFrame();
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.add(new polygon_regelmaessig());
  f.setSize( 200, 200 );
  f.setVisible( true );
  int N = Integer.parseInt(args[0]);
  
  
 }

 public class Subklasse extends polygon_regelmaessig {
 
 protected void paintComponent(Graphics g, int N)
 {
  
  VertexDrawer.Zeichnen (g, getWidth() / 2, getHeight() / 2, 60, N);
 }
}

class VertexDrawer
{
public static void Zeichnen (Graphics g, int x, int y, int r, int n)
 {
  Polygon p = new Polygon();

  for (int i=0; i<n; i++)
   p.addPoint((int) (x + r * Math.cos(i * 2 * Math.PI / n )),
              (int) (y + r * Math.sin(i * 2 * Math.PI / n )));

  
   g.drawPolygon( p );
 }
}}
 

Androbin

Bekanntes Mitglied
Vielen Dank!

So hatte ich es ganz am Anfang, jedoch ohne Subklasse. Das war also der Fehler...

Aber noch eine Frage:
hebe nun alles so gemacht und jetzt sagt Eclipse, dass die Methode "Zeichnen" nicht als statische Methode erklärt werden kann, was ja auch klar ist. Allerdings ergeben sich auch Fehlermeldungen, wenn ich sie als nicht statisch definiere. Wie kann ich das noch in den Griff bekommen?

...
Die genauen Fehlermeldungen zu kennen, wäre hilfreich!
 
Zuletzt bearbeitet:

dmessn28

Mitglied
hebe nun alles so gemacht und jetzt sagt Eclipse, dass die Methode "Zeichnen" nicht als statische Methode erklärt werden kann, was ja auch klar ist. Allerdings ergeben sich auch Fehlermeldungen, wenn ich sie als nicht statisch definiere. Wie kann ich das noch in den Griff bekommen?
Versuch erstmal zu verstehen was static macht, bevor du es in dein Programm kopierst. Die Klassen Subklasse und VertexDrawer sind innere Klassen. Wenn du eine Methode in der inneren Klasse static machen willst, muss auch die innere Klasse selbst static sein. Aber bevor du jetzt alle Klassen static machst solltest du dir wirklich die Grundlagen aneignen. Du brauchst nicht für jede neue Methode eine eigene Klasse. Ich hab mal die nicht benötigten Klassen weggelöscht, dann sollte der Aufruf zumindest funktionieren.

Java:
import java.awt.*;
import javax.swing.*;

public class polygon_regelmaessig extends JPanel
{

 public static void main(String[] args )
 {
  JFrame f = new JFrame();
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.add(new polygon_regelmaessig());
  f.setSize( 200, 200 );
  f.setVisible( true );
  int N = Integer.parseInt(args[0]);
  
  
 }

 protected void paintComponent(Graphics g, int N)
 {
  
  zeichnen (g, getWidth() / 2, getHeight() / 2, 60, N);
 }

public static void zeichnen (Graphics g, int x, int y, int r, int n)
 {
  Polygon p = new Polygon();

  for (int i=0; i<n; i++)
   p.addPoint((int) (x + r * Math.cos(i * 2 * Math.PI / n )),
              (int) (y + r * Math.sin(i * 2 * Math.PI / n )));

  
   g.drawPolygon( p );
 }
}
 
Zuletzt bearbeitet:

tatra-bennl

Mitglied
Hallo dmessn28,

Dankeschön, jetzt klappt es, d.h. es werden keine Fehler angezeigt. Allerdings habe ich mit mehreren Werten als Kommandozeilenargument versucht; es wird allerdings nichts ausgegeben. (siehe Screenshot) So ähnlich hatte ich den Code schon vor dem Eröffnen des Threads, d.h. ohne Subklassen.

Es wird mir an der Zeile int N = Integer.parseInt(args[0]); folgender Hinweis angezeigt:
"The value of the local variable N is not used"

Diese Meldung hatte ich bereits ganz am Anfang, als ich den Parameter N aus der main-Methode in die andere Methode (jetzt "paintComponent") übernommen habe.
Dann habe ich mich wie mir empfohlen wurde noch weiter belesen und informiert und bin auf diese Geschichte mit den Subklassen gestoßen.

Meine Frage am Anfang war deshalb eigentlich nur: wie mache ich dem Programm klar, dass er in dieser paintComponent-Methode das int N aus der main-Methode verwenden soll? Anscheinend kapiert das Programm ja momentan noch nicht, dass beide "N"s dieselben sind...

Ohne Titel.jpg
 

Gucky

Top Contributor
Dann musst du eine Klassenvariable verwenden.
Also eine Methode setN(int n) in subklasse erstellen, die den Wert setzt und zeichne aufruft.

paintComponent ist eine Methode, die von Swing bereitgestellt wird. Sie sollte nicht verändert werden (z.B. durch abweichende Parameterzahlen).



Ich möchte dir ein Buch/Tutorial sehr ans Herz legen, damit du dir die Grundlagen aneignen kannst. Programmieren ist weder wie eine Spielekonsole (einlegen läuft) noch wie ein PC (ich brauche nicht alles und das, was ich brauche ist selbsterklärend) sondern dabei brauchst du das Gesamtpaket mitsamt sämtlicher sprachlichen Besonderheiten, Syntax, Grammatik, Semantik etc. Und das lernt man nicht durch ausprobieren, sondern durch Bücher/Tutorials.
 
Zuletzt bearbeitet:

Androbin

Bekanntes Mitglied
Hallo dmessn28,
Meine Frage am Anfang war deshalb eigentlich nur: wie mache ich dem Programm klar, dass er in dieser paintComponent-Methode das int N aus der main-Methode verwenden soll? Anscheinend kapiert das Programm ja momentan noch nicht, dass beide "N"s dieselben sind...
Hast du denn wirklich überhaupt gar keine Ahnung vom Programmieren?
(Tschuldigung, nicht böse gemeint! Ich hatte heute einfach einen schlechten Tag...)

Aber woher soll Java denn wissen, das beide Variablen dasselbe sein sollen?
Ja, beide Variablen haben den gleichen Variablennamen, allerdings sind sie beide lokal,
d. h. sie existieren beide nur innerhalb der Methode, in der sie deklariert wurden!

Du kannst dir also entweder eine globale Variable anlegen (außerhalb der Methoden),
oder du übergibst sie der anderen Methode als Argument/Parameter!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Kommandozeilenparameter startsWith("...") Java Basics - Anfänger-Themen 17
A Klassen Datei als Kommandozeilenparameter übergeben Java Basics - Anfänger-Themen 8
kokojamboo92 Kommandozeilenparameter Java Basics - Anfänger-Themen 4
T Kommandozeilenparameter in Eclipse Java Basics - Anfänger-Themen 4
E Zeichen von Kommandozeilenparameter zählen Java Basics - Anfänger-Themen 6
F Pruefen ob Kommandozeilenparameter ein Int ist Java Basics - Anfänger-Themen 6
E Kommandozeilenparameter Java Basics - Anfänger-Themen 15
M Dateipfad als Kommandozeilenparameter Java Basics - Anfänger-Themen 2
M Kommandozeilenparameter Java Basics - Anfänger-Themen 9
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
C Int an andere Klasse übergeben Java Basics - Anfänger-Themen 26
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
M Integer aus aus einer Klasse in andere speichern Java Basics - Anfänger-Themen 12
A Selbe Aufgaben stellung, andere Lösung Java Basics - Anfänger-Themen 7
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5
Y Java andere Klasse aufrufen Java Basics - Anfänger-Themen 6
J Combobox füllen mit Wertausgabe von andere Klasse Java Basics - Anfänger-Themen 3
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
E Methode soll andere Methode der selben Klasse aufrufen Java Basics - Anfänger-Themen 28
B Mit webservice a) String auf Webseite ausgeben b) Weiterleitung auf andere Seite Java Basics - Anfänger-Themen 10
J Übergabe von Parametern an andere Methoden Java Basics - Anfänger-Themen 5
scratchy1 Kann man in einer Methode eine andere aufrufen? Java Basics - Anfänger-Themen 2
G JTextField per Button speichern und an andere Klasse übergeben Java Basics - Anfänger-Themen 2
R Weitergabe von Arrays aus Methoden in andere Klasse Java Basics - Anfänger-Themen 5
M JTable an andere Klasse übergeben Java Basics - Anfänger-Themen 2
neerual Klassen Wie rufe ich Klassen, die andere Klassen extenden in einer Test Unit auf? Java Basics - Anfänger-Themen 10
E Variable (Vektor) in andere Methode übergeben Java Basics - Anfänger-Themen 4
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
W Klassen greifen auf andere Klassen zu Java Basics - Anfänger-Themen 1
L Klassen Objekt aus einer Warteschlange in eine andere übergeben, geht nicht? Java Basics - Anfänger-Themen 6
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
F OOP Instanz einer Klasse an eine andere weitergeben Java Basics - Anfänger-Themen 16
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
S verweis auf andere Klasse fehler Java Basics - Anfänger-Themen 3
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
JavaNewbie2.0 Strings in andere Klassen importieren. Java Basics - Anfänger-Themen 2
M Methoden Int einer Methode an eine andere Methode übergeben Java Basics - Anfänger-Themen 4
J Best Practice Auf DefaultTableModel in andere Klasse zugreifen Java Basics - Anfänger-Themen 4
J Werte an eine andere Klasse übergeben Java Basics - Anfänger-Themen 4
I Zähler, der erst wieder zählt nachdem Pixel wieder andere Farbe hat Java Basics - Anfänger-Themen 2
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
P Variablen Wie kann ich eine lokale Variable in eine andere Methode einfügen? Java Basics - Anfänger-Themen 27
P auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 12
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
A Nach Druck eines Buttons reagieren andere Button nicht Java Basics - Anfänger-Themen 3
TheMenox Methoden Bestimmung an welche Methode eine andere Methode ihren Wert weitergeben soll Java Basics - Anfänger-Themen 35
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
V Andere Schreibweise für % Modulo Java Basics - Anfänger-Themen 9
L Variable an andere Klasse weitergeben - Was mache ich falsch? Java Basics - Anfänger-Themen 2
O Übergabe in eine andere Klasse Java Basics - Anfänger-Themen 3
T Integer Wert in andere Methode übergeben Java Basics - Anfänger-Themen 2
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
F double[] an andere Methode übergeben Java Basics - Anfänger-Themen 1
N Variablen ändern wenn eine andere geändert wird Java Basics - Anfänger-Themen 7
J 2 dimensionales Array an andere Methode übergeben? Java Basics - Anfänger-Themen 1
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
W Wert an andere Klasse übergeben Java Basics - Anfänger-Themen 8
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
T Array in andere Klasse verwenden Java Basics - Anfänger-Themen 3
W Klassen Auf andere Klassenobjekte zugreifen Java Basics - Anfänger-Themen 20
W Variable an andere Klasse übergeben Java Basics - Anfänger-Themen 3
J JComboBox in andere Klasse Java Basics - Anfänger-Themen 2
E OOP Methode an andere Methode übergeben / OOP Anfänger Java Basics - Anfänger-Themen 4
K Erste Schritte Classe in andere Einfügen?? Java Basics - Anfänger-Themen 12
U Inhalt von JTextfield an andere Klasse weitergeben Java Basics - Anfänger-Themen 13
O Java Interfaces für andere Programmiersprachen zur Verfuegung stellen? Java Basics - Anfänger-Themen 2
S Aus einer Klasse eine andere laden Java Basics - Anfänger-Themen 6
L Variable andere Variable und z.B. Preis zuordnen Java Basics - Anfänger-Themen 7
M Variablen übergeben an andere Klasse Java Basics - Anfänger-Themen 9
O Dezimalzahl in andere Zahlensysteme Java Basics - Anfänger-Themen 5
M Datei an andere Datei komplett anhängen Java Basics - Anfänger-Themen 11
S Methoden Rückgabewert einer Methode als Parameter an eine andere Methode übergeben, geht das? Java Basics - Anfänger-Themen 5
J Kann ein Objekt andere Objekte beinhalten ? Java Basics - Anfänger-Themen 33
S TextArea, RandomAccessFile, Apend und andere Tricks... Java Basics - Anfänger-Themen 7
O Variabeln aus einer andere Klasse dauerhaft einen anderen Wert übergeben Java Basics - Anfänger-Themen 5
K Best Practice In Klassen auf andere Objekte mit variablen Namen zugreifen Java Basics - Anfänger-Themen 6
O Methode in andere Klasse verlegt, "auslesen" einer HTML Seite verschnellert - Problem. Java Basics - Anfänger-Themen 4
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
S Klassen Mit Mainklasse auf andere zugreifen Java Basics - Anfänger-Themen 3
L Strings in andere Klassen "übergeben" Java Basics - Anfänger-Themen 3
N Probleme mit Class in andere Class adden (Cardlayout) Java Basics - Anfänger-Themen 2
P Eingabe aus JTextField/Area an eine andere Klasse übergeben. Java Basics - Anfänger-Themen 2
B Methode in andere Klasse verschieben Java Basics - Anfänger-Themen 9
G ResultSet übergeben bzw. in andere Variable übernehmen Java Basics - Anfänger-Themen 6
G Projekte importieren und andere Fragen Java Basics - Anfänger-Themen 3
Joew0815 Klassen Andere Klassse in Main starten Java Basics - Anfänger-Themen 8
M Daten in DB oder andere möglickeiten. Java Basics - Anfänger-Themen 5
S Erste Schritte import für andere Klassenfiles verfügbar machen? (Java unter Eclipse) Java Basics - Anfänger-Themen 8
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben