Konsolen eingabe

Susi194

Mitglied
Hi, kann mir jemand erklären warum mir folgender Code bei args.length 0 ausgibt?
Ich lese immer einen String ein und einen integer, was auch super geht jedoch ist args.length immer 0. In der ersten klasse habe ich meine algorithmus geschrieben um eine eingelesene Kreditkartennummer zu checken. Diese Eingabe soll nun von der Konsole erfolgen, es geht auch einlesen aber warum ist args.length 0 ???

Code:
import java.util.*;

public class CheckLuhn {

   public static void main(String[] args) {
      
       System.out.println("Kreditkartennummer eingeben");
       Scanner sc = new Scanner(System.in);
       String kreditkarte = sc.nextLine();
      
       System.out.println("Anzahl Ziffern eingeben");
       int anzahl = sc.nextInt();

       System.out.println(kreditkarte);
       System.out.println(anzahl);
      
       System.out.println(Luhn.check(kreditkarte, anzahl));
      
       System.out.println(args.length);
   }

}

Konsole:

Kreditkartennummer eingeben
4683457829316528
Anzahl Ziffern eingeben
16
4683457829316528
16
true
0
 

Javinner

Top Contributor
was macht den die Methode Luhn.check(kreditkarte, anzahl) ?
Eventuell irre ich, aber du übergibst an die Main-Methode nichts, daher ist String[]args null
 

Susi194

Mitglied
ich glaube ich verstehs, statts eigene variablen zu deklarien die konsolen eingabe in args[0] und args[1] speichern oder?

ich glaube es soll auch nur dier kreditkartennummer eingelesen werden und die ziffernanzahl ist mit 16 fix
 

Robat

Top Contributor
Die Parameter die du beim starten mit angibst landen dann in dem args Array.
programmname param1 param2 param3 ..
 

Susi194

Mitglied
hm also die aufgabenstellung ist so:

Schreiben Sie eine Klasse CheckLuhn, die nur ein Hauptprogramm zum Testen der Methode check enthält. Die Kreditkartennummer soll von der Kommandozeile gelesen werden.

Hinweise:

Der Parameter args der Methode main enthält die Kommandozeilenargumente.

Mit args.length kann herausgefunden werden, wie viele Argumente es gibt.

Man erhält die Argumente durch args[0], args[1],

Beispielaufruf: java CheckLuhn 4683457829316528

args.length == 1, args[0] == 4683457829316528

Versteh das leider nicht
 

Robat

Top Contributor
Dann darfst du die Nummern nicht im Programm einlesen sondern musst es wissen oben beschrieben beim Programmstart als Kommandozeilenargumente angeben. Im Programm kannst du dann über die Länge des Arrays abfragen ob genug Parameter angegeben wurden. Wenn ja kannst du die Werte aus dem Array holen und parsen.
 

Susi194

Mitglied
ok, jetzt bin ich völlig raus, man startet das programm nu von der Kommandozeile? dieser aufruf java CheckLuhn 4683457829316528 startet mein programm und gibt sofort den kreditkartennummer string mit?

Das habe ich noch in keiner Folie gesehen, komisch dass wir dazu ne aufgabe machen sollen

Wie sähe denn der richtige code nu aus?
 

Robat

Top Contributor
Hier mal an einem kleinen Beispiel "Foo", welches 2 Parameter bekommt (einen String und eine Zahl) foo Test 2
Java:
public class Foo {
  public static void main(String[] args) {
      if(args.length >= 2) {
           String string = args[0];
           int zahl = Integer.parseInt(args[1]);
           System.out.println("Das ist ein String: " + string + " und das ist eine Zahl: " + zahl);
      }
  }
}
Und diese Ausgabe liefert.
Code:
Das ist ein String: Test und das ist eine Zahl: 2

Damit solltest du eigentlich alles kennen um die Aufgabe zu lösen.
 

Susi194

Mitglied
ok, aber bei mir hängts auch noch bei der Kommandozeileneingabe. Wir nutzen eigentlich immer eclipse ich muss da noch nachlesen wie man in der cmd kompiliert und das programm startet...
 

FourOhFour

Aktives Mitglied
Das geht auch bei Eclipse.

Ansonsten mit Command Prompt:
- cd <directory name> //Kannst entweder von directory zu directory oder direkt den ganzen Pfad zum Programm eingeben
- javac <programm>.java
- java <programm name>

Mit Eclipse:
- Run
- Run Configurations
- Arguments
- in "Program Arguments" dann die einzelnen arguments eingeben, jedes durch ein space getrennt.
 

Susi194

Mitglied
super, dies scanner sc und soweiter brauche ich dann garnicht oder?
das wäre dann wenn man im programm etwas einlesen möchte.

und wenn ich meine 16 einlesen möchte müsste ich sie noch zu einem int konvertieren oder
 

Meniskusschaden

Top Contributor
Mit Eclipse:
- Run
- Run Configurations
- Arguments
- in "Program Arguments" dann die einzelnen arguments eingeben, jedes durch ein space getrennt.
Alternativ kann man dort auch ${string_prompt}eintragen. Dann bekommt man bei jedem Start ein Eingabefenster für die Parametereingabe. Kann ganz praktisch sein, wenn man mit unterschiedlichen Eingaben testen möchte.
 

X5-599

Top Contributor
@Susi194
Ja, Scanner ermöglicht es zur Laufzeit Daten einzulesen. Wenn du in deinem Programm diese per Startparameter übergibst, brauchst du den nicht mehr.
Du kannst deine 16stellige Zahl per Startparameter übergeben und sie dann konvertieren. Ein int wird aber hier nicht funktionieren. Kannst du dir denken wieso?
 

Susi194

Mitglied
naja, der eingabe paramenter ist ja vom Typ String args[], also alles was eingelsen wird wird als string ins array gespeichert, er liest dann die kreditkartennummer an arg[0] ein und meinen int wert an arg[1].

Ich könnte jedoch meine main() in diese form ändern --> public static void main(string nummer,int ianzahl ){...}

dann könnte ich einen string und einen int per kommandozeilenstart einlesen oder?

und meine funktion so aufrufen --> System.out.println(Luhn.check(nummer, anzahl));

hätte noch eine Frage und zwar kann meine mehtode check() leeerzeichen rausfiltern, aber man gar keine leerzeichen einlesen beim starten von der Kommandozeile

als sowas 1234567890123 45 6 nimmt er garnicht meine methode würde die leerzeichen herausfiltern und die ziffern getrennt verarbeiten und eine prüfsumme bilden
 
Zuletzt bearbeitet:

X5-599

Top Contributor
Ah sorry, hab da was missverstanden. Ich dachte du meinst die Kreditkartennummer mit dem: "in int konvertieren". Dass du einen zweiten Wert eingeben möchtest, der die Stellenanzahl darstellt hab ich übersehen.

Du kannst, wie du schon sagtest die Kreditkartennummer als ersten Parameter und die Anzahl anls zweiten Parameter übergeben. Darauf kannst du dann per args[0] und args[1] zugreifen.
Und wenn du die Anzahl als int brauchst kannst du args[1] natürlich in einen int konvertieren.

So funktioniert dann auch: System.out.println(Luhn.check(nummer, anzahl));
Wobei "nummer" dann ein String ist und "anzahl" ein int.

Den Standardeinstiegspunkt eines Java Programms: public static void main(String[] args) kannst du nicht verändern. Ohne diese Methode startet ein Java Programm nicht.
 

X5-599

Top Contributor
Das mit den Leerzeichen geht schon. Du musst beim Programmstart einfach den zusammengehörenden String mit " " umgeben.
Code:
java MeinProgramm erster zweiter "dritter vierter"

Code:
public class MeinProgramm
{
  public static void main(String[] args)
  {
    for(String s : args)
    {
      System.out.println(s);
    }
  }
}

ergibt:
Code:
erster
zweiter
dritter vierter
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
W Wiederkehrende Konsolen-Anzeige mit do-While?! Java Basics - Anfänger-Themen 33
K Leerzeile in Konsolen-Ausgabe Java Basics - Anfänger-Themen 4
celta_vigo Konsolen-Fenster ist weg Java Basics - Anfänger-Themen 5
F Konsolen Befehl ausführen und Rückgabe auswerten Java Basics - Anfänger-Themen 3
H Frage zur Konsolen-Ausgabe Java Basics - Anfänger-Themen 1
J Möchte gern den Konsolen Output auf JTextPane umleiten Java Basics - Anfänger-Themen 4
I Externes konsolen Anwendung (.exe) starten Java Basics - Anfänger-Themen 2
E Jar Fehler = Konsolen Fehler Java Basics - Anfänger-Themen 4
P seltsamer konsolen aufruf Java Basics - Anfänger-Themen 8
W Konsolen-Ausgabe formatieren Java Basics - Anfänger-Themen 10
P konsolen ausgabe bei servlet Java Basics - Anfänger-Themen 2
D Konsolen aufruf geht nich Java Basics - Anfänger-Themen 2
A Java-Konsolen Menü Java Basics - Anfänger-Themen 6
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
H Eingabe Java Basics - Anfänger-Themen 7
F Bedingung für Eingabe Java Basics - Anfänger-Themen 2
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
B Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen Java Basics - Anfänger-Themen 5
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
J Eingabe Einschränken Java Basics - Anfänger-Themen 1
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
D Array via Eingabe befüllen Java Basics - Anfänger-Themen 6
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N Abbrechen einer Eingabe endet im Fehler Java Basics - Anfänger-Themen 3
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
x-tshainge Bei if (eingabe = = ... ) enter als eingabe nehemen Java Basics - Anfänger-Themen 4
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
T Input/Output Falsche Eingabe ausgeben Java Basics - Anfänger-Themen 3
R Ratespiel mit Return und einer Eingabe Java Basics - Anfänger-Themen 1
K Eingabe in Array speichern und Ausgeben Java Basics - Anfänger-Themen 9
J Eingabe des Scanners an einer bestimmten Position Java Basics - Anfänger-Themen 6
J Input/Output Den zweiten Output erst nach Eingabe ausgeben Java Basics - Anfänger-Themen 4
S Eingabe auf Richtigkeit und Reihenfolg überprüfen Java Basics - Anfänger-Themen 3
R Java CMD Eingabe verbergen Java Basics - Anfänger-Themen 4
L Eingabe überprüfen Java Basics - Anfänger-Themen 7
M Eingabe des Benutzers Verwenden Java Basics - Anfänger-Themen 9
T Input/Output Int Eingabe auf Zahl überprüfen Java Basics - Anfänger-Themen 30
S Method mit Eingabe abrufen Java Basics - Anfänger-Themen 1
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
G Warum funktioniert das Programm für negative Eingabe nicht? Java Basics - Anfänger-Themen 3
O Erste Schritte Eingabe anweisungen eliminieren Java Basics - Anfänger-Themen 3
G Objekt Instanziierung von Eingabe abhängig machen Java Basics - Anfänger-Themen 5
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
H Alternative Eingabe Java Basics - Anfänger-Themen 3
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben