0 Daumen
350 Aufrufe

Frage:

Im ersten Kommandozeilenargument sollen nach den Ziffern von 0 bis 9 gesucht werden und Ausgegeben werden.

Beispielstext: 86Te123st43

Ausgabe:

8

6

1

2

3

4

3

Code:

public static void main(String[] args) {
String s= args[0];
char[] m = s.toCharArray();

Hier dachte ich mit einer if Verzweigung nach den Zeichen zwischen 0 und 9 zu suchen und diese Auszugeben, jedoch erscheint in Eclipse eine Fehlermeldung.

Hat jemand eine andere Idee?

Avatar von
jedoch erscheint in Eclipse eine Fehlermeldung.

Welche?

Hat jemand eine andere Idee?

Wozu? Deine Idee ist in Ordnung. Lediglich bei der Umsetzung deiner Idee hast du Fehler begangen. Ich weiß aber nicht welchen, weil du den relevanten Teil des Quelltextes nicht angegeben hast.

public static void main(String[] args) {
String s= args[0];
char[] m = s.toCharArray();

Du brauchst die Zeichenkette nicht in ein char-Array umzuwandeln um auf die einzelnen Zeichen zuzugreifen. Du kannst auch String::charAt() verwenden.

Übrigens, verwende die Schaltfläche </> um Quelltext als solchen zu kennzeichnen.

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Aufgabe:
Im ersten Kommandozeilenargument sollen nach den Ziffern von 0 bis 9 gesucht werden und diese sollen ausgegeben werden.

Beispielstext: 86Te123st43
Ausgabe:
8
6
1
2
3
4
3

Lösung:
Der gegebene Code versucht, ein einzelnes Zeichen zu überprüfen, um zu sehen, ob es eine Ziffer ist, und wenn ja, dieses Zeichen auszugeben. Dies kann mit einer if-Verzweigung und der Funktion Character.isDigit() in Java erreicht werden.

Hier ist der vollständige Code mit den notwendigen Änderungen:

java
public class Main {
    public static void main(String[] args) {
        if (args.length > 0) {
            String s = args[0];
            char[] m = s.toCharArray();
            
            // Iteriere durch das Array und prüfe ob das Zeichen eine Zahl ist
            for (char c : m) {
                if (Character.isDigit(c)) {
                    System.out.println(c);
                }
            }
        } else {
            System.out.println("Kein Argument vorhanden");
        }
    }
}


Erklärung:

1. Überprüfung, ob ein Kommandozeilenargument vorhanden ist:
java
   if (args.length > 0) {
   


2. Konvertiere das erste Argument in ein Zeichenarray:
java
   String s = args[0];
   char[] m = s.toCharArray();
   


3. Iteriere durch jedes Zeichen im Array, überprüfe, ob es eine Ziffer ist, und gib es aus:
java
   for (char c : m) {
       if (Character.isDigit(c)) {
           System.out.println(c);
       }
   }
   


4. Fehlerbehandlung:
Wenn keine Kommandozeilenargumente vorhanden sind, wird eine Nachricht ausgegeben:
java
   System.out.println("Kein Argument vorhanden");
   


Erläuterung der Funktion Character.isDigit():
- Character.isDigit(char c) ist eine Methode der Klasse Character, die einen boolean zurückgibt. Sie liefert true zurück, wenn der übergebene char-Wert eine Ziffer (0-9) ist, ansonsten false.

Mit diesem Code wird das angegebene Beispiel wie gewünscht funktionieren. Jegliche Ziffern aus dem Text "86Te123st43" werden einzeln ausgegeben.

Testen des Codes:
Beim Ausführen dieses Programms in einer Java-Umgebung mit dem Kommandozeilenargument "86Te123st43" sollte die erwartete Ausgabe:


8
6
1
2
3
4
3


erscheinen.
Avatar von 4,6 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community