subStrings zu int Array umwandeln?

justgame

Mitglied
a) Schreibt zunächst eine Methode, die überprüft, ob ein gegebenes Zeichen (char) eine Ziffer ist. boolean istZiffer(char c); Beispielaufruf: istZiffer(‘A‘); liefert false.


Aufgabe a habe ich wie folgt gelöst :

Java:
    public static boolean istZiffer(char c) {

        boolean antwort = true;

        if (Character.isDigit(c) == true) {
            return antwort;
        } else {
            antwort = false;
        }

        return antwort;

    }


Hier Blicke ich aber leider nicht mehr durch und bräcuhte eure Hilfe

b) Schreibt eine Methode, die eine Zeichenkette (String) als Eingabe erhält und ein Feld (Array) zurückgibt. Das Feld enthält positive, ganze Zahlen (int). Diese Zahlen werden gebildet aus den Substrings der übergebenen Zeichenkette. Hierbei werden nur diejenigen Substrings als Zahlen im Feld aufgenommen, die sich als positive, ganze Zahlen auffassen lassen. Die Substrings der Zeichenkette sind getrennt durch ein Komma gefolgt von einem Leerzeichen. Verwendet hierfür eure Implementierung aus Aufgabe 2. a). int[] subStrings(String str);
Beispielaufruf: subStrings(„-5, 20, abc, -20, defg, 45ab67, 23“); liefert {20,23}

mfg
 

njans

Top Contributor
Naja du solltst eine Methode
Java:
 int[] subStrings(String str);
schreiben, die einen String entgegen nimmt. Der String hat Subsequenzen, die mit ", " getrennt sind. Wenn ein Substring eine positive, ganze Zahl ist, dann soll diese mit in die Ausgabe.

Du kannst an dem Trennzeichen mittels String.split(...) ein array bauen, welches alle Substrings enthält. Dann musst du nur für jeden Substring prüfen, ob jedes Zeichen auch ein Digit ist (anführende und anstehende Leerzeichen kannst du mit .trim() entfernen) und diese, falls so, in einen Integer umwandeln und speichern.
 

Gucky

Top Contributor
Nachgucken ob es eine ganze Zahl ist, geht mit der .contains("."); Methode. Ist zwar unkonventienell aber das Beste und Einfachste, was mir eingefallen ist. :D
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Ich meinte, dass er erst nachprüft ob das überhaupt eine Zahl ist und dann guckt er nach, ob es eine ganze Zahl ist. Aber dein isDigit erschlägt das auch schon.

Da war ein ziehmlich krasser Lag in meiem Browser, dass die Nachricht erst so spät abgeschickt wurde. Meine Methode ginge auch aber die ist wohl zu kompliziert.

Ich habe aber noch etwas zu deiner Lösung für die erste Aufgabe. Ich bezweifle, dass dein Prof dir diese Aufgabe gegeben hat, damit du einfach eine API Methode nimmst. Ich denke, dass kommt besser, wenn du dir den Ascii Code davon geben lässt und dann nachguckst, ob das Zeichen laut Ascii eine Zahl ist. Den Ascii Code bekommst du mit charAt(int);
 

justgame

Mitglied
Das wäre meine Implementierung dazu.

Java:
    public class konverter {

    public static void main(String args[]) {

        ausgabe(subString("-5, 20, abc, -20, defg, 45ab67, 23"));
    }

 public static int[] subString(String str) {

        String string = new String();
        string = str;
        String[] array = string.split(", ");

        int[] ganzeZahlen;

        for (int i = 0; array.length; i++) {
            if (istZahl(array[i]) == true) {
                array[i] = ganzeZahlen[i];

            }

        }

        return ganzeZahlen;

    }

    public static void ausgabe(String[] ar) {

        System.out.println("Liste des Array: ");
        for (int i = 0; i < ar.length; i++) {
            System.out.println(ar[i]);
        }

    }

    static boolean istZahl(String s) {
        boolean antwort = true;
        char[] buchstaben = s.toCharArray();
        for (int i = 0; i < buchstaben.length; i++) {
            antwort = antwort && Character.isDigit(buchstaben[i]);
        }
        return antwort;
    }

Ich weiss nicht inwiefern meine Idee richtig ist
aber ich bekommen hier an der Stelle Fehler angezeigt.

Ich habe mir das so vorgestellt:

Aus meinem subStrings wird ein String[] array; erstellt.
Dann möchte ich in einer for-Schleife prüfe ob alle meine array-Inhalte aus Zahlen bestehen mit der istZahl(); Methode. Leider will es noch nicht funktionieren



Java:
for (int i = 0; array.length; i++) {
            if (istZahl(array[i]) == true) {
                array[i] = ganzeZahlen[i];
Ich habe malmeine Methode geprüft und tatsächlich es macht aus einem String mit subs einen String[] array. Also das funktioniert schonmal mit der split-Methode.
 
Zuletzt bearbeitet:

njans

Top Contributor
int[] ganzeZahlen;
Das hast du zwar deklariert, aber nicht initialisiert. Ergo ist das null. Du kannst hier natürlich noch nicht wissen, wie viele Zahlen in das Array müssen, aber du weißt, dass es maximal array .length sein können.
Wenn du Listen verwenden darfst, lässt sich das ganze elegant lösen, ansonsten musst du dir merken, wie zahlen du gefunden hast und später die Arraylänge anpassen (Array Einträge in ein neues Array kopieren)
 

justgame

Mitglied
Erstmal natürlich vielen Dank für eure Antworten (Y)
Ich habe meinen Beitrag vorher nochmal editiert gehabt villeicht wird meine Idee dadurch etwas deutlicher.

ArrayList dürfen wir nicht benutzen, da wir diese noch nicht hatten. Meine Methode muss aufjedenfall eine int[] mit allen ganzen Zahlen zurückgeben.

Da liegt ya auch schon das Problem. Ich weiss vorher ya nicht wie groß mein Array sein wird, das hängt ya ganz von den Substrings ab wie kann ich diese also initialisieren ?

Und hier an der Stelle :
habe ich den Fehler int cannot be converted to boolean

Java:
for (int i = 0; array.length; i++) {
            if (istZahl(array[i]) == true) {
                array[i] = ganzeZahlen[i];

            }

        }
 

njans

Top Contributor
Als erstmal am Rande: ausgabe() muss ein int[] engegen nehmen, kein String[].
Du kriegst da den Fehler, da du als Bedingung nur array.length stehen hast. Du wolltest sicherlich i < array.length schreiben.
 
Zuletzt bearbeitet:

justgame

Mitglied
Stimmt :idea:

Java:
    public static String[] subString(String str) {

        String string = new String();
        string = str;
        String[] array = string.split(", ");
        
        for( int i = 0; i < array.length; i++) {
            if ( istZahl(array[i]) == true)
                System.out.println(array[i]);
        }

        return array;

    }

gibt in der Konsole schonmal die richtigen Zahlen wieder :D
Jetzt muss ich statt sysoutprint nur noch ein int[] array; zurückgeben können
 

justgame

Mitglied
Ich komme der Sache immer etwas näher:

Meine Methode sieht inzwischen so aus :

Java:
public static int[] subString(String str) {

        String string = new String();
        string = str;
        String[] array = string.split(", ");

        int[] ganzeZahlen = new int[array.length];

        for (int i = 0; i < array.length; i++) {
            if (istZahl(array[i]) == true) {
                ganzeZahlen[i] = Integer.parseInt(array[i]);

            }
        }

        return ganzeZahlen;

    }

Java:
public static void main(String args[]) {

        ausgabe(subString("-5, 20, abc, -20, defg, 45ab67, 23"));

    }

Das Problem hier natürlich ist, dass alle "nicht ganzen Zahlen" automatisch den Wert 0 zugewiesen bekommen und mit in den int[] array aufgenommen. Das wollte ich natürlich vermeiden. Das int[] array soll ya nur so lang sein wie es ganze Zahlen inden subStrings gibt... Hat jemand hierfür eine Lösung ?
 

Gucky

Top Contributor
Du kannst einmal drüberlaufen und alle ganzen Zahlen zählen, ein passend großes Array machen und dann noch mal drüberlaufen und dann alle ganzen Zahlen abspeichern.
 

justgame

Mitglied
Wie würde das im Code aussehen ?

Und 0 gehört doch auch zu den ganzen positiven Zahlen oder ? Das heisst es würde sich nichts in der Array-Länge ändern.
Außer ich sage: alle Zahlen >= 1;
dann hätte ich aber das Problem, dass wenn ich wirklich mal eine 0 im subString habe diese nicht mit aufgenommen wird oder ?
 

njans

Top Contributor
Das kannst du recht kompakt lösen:

Java:
 public static int[] subString(String str) {
 
        String string = new String();
        string = str;
        String[] array = string.split(", ");
 
        int[] ganzeZahlen = new int[array.length];
        int anzahlGanzerZahlen = 0;
        
        for (int i = 0; i < array.length; i++) {
            if (istZahl(array[i]) == true) {
            	ganzeZahlen[i] = Integer.parseInt(array[i]); // zu integer umwandeln
            	anzahlGanzerZahlen++;
            }
        }
        
        int[] gekuerzteGanzeZahlenArray = new int[anzahlGanzerZahlen];
        
        for (int i = 0; i < anzahlGanzerZahlen; i++)
		{
        	gekuerzteGanzeZahlenArray[i] = ganzeZahlen[i];
		}
        
        return gekuerzteGanzeZahlenArray;
    }
 

njans

Top Contributor
Ja wenn man vergisst, den Index richtig zu setzen:
Java:
String string = new String();
        string = str;
        String[] array = string.split(", ");
 
        int[] ganzeZahlen = new int[array.length];
        int anzahlGanzerZahlen = 0;
        
        for (int i = 0; i < array.length; i++) {
            if (istZahl(array[i]) == true) {
            	ganzeZahlen[anzahlGanzerZahlen] = Integer.parseInt(array[i]); // Darf natürlich nicht i sein, sondern anzahlGanzerZahlen
            	anzahlGanzerZahlen++;
            }
        }
        
        int[] gekuerzteGanzeZahlenArray = new int[anzahlGanzerZahlen];
        
        for (int i = 0; i < anzahlGanzerZahlen; i++)
		{
        	gekuerzteGanzeZahlenArray[i] = ganzeZahlen[i];
		}
        
        return gekuerzteGanzeZahlenArray ;

Oder etwas kompakter:
Java:
 public static int[] subString(String str) {
 
        String[] array = str.split(", ");
        int[] ganzeZahlen = new int[array.length];
        int anzahlGanzerZahlen = 0;
        
        for (int i = 0; i < array.length; i++) {
            if (istZahl(array[i])) {
            	ganzeZahlen[anzahlGanzerZahlen] = Integer.parseInt(array[i]);
            	anzahlGanzerZahlen++;
            }
        }
        
        return Arrays.copyOf(ganzeZahlen, anzahlGanzerZahlen);
    }
 
Zuletzt bearbeitet:

justgame

Mitglied
Klappt ! THX !

Jetzt mal aus neugiert, könnte man das einfacher implementieren :D ?

Und noch eine andere Frage lernt man als Programmierer die gesamte JAVA-Bibliothek auswendig oder woher weiss man das es eine Methode .split gibt die subStrings trennt und als Array zurückgibt ?
Ich meine ich wäre in 100 Jahren nicht auf diese Methode gestoßen.
UNd gibt es sowas wie eine in deutsch übersetzte Java Bibliothek zum nachschlagen ?
 

njans

Top Contributor
Galileo Computing :: Java ist auch eine Insel - index
Das offene Buch "Java ist auch nur eine Insel" enthält viele Materialen und ist ein gutes Nachschlagewerk.
Die Java Bibs lernt man, indem man immer wieder alte Dinge verwendet und neue Dinge nachschlagen muss (google ist dein Freund).
Das kann man sicherlich noch kürzer machen, zumal man dabei natürlich auch auf leserlichkeit verzichten kann. Wenn Java-Code leserlich ist, dann ist das oftmals mehr wert, als ihn kurz zu fassen.
 

njans

Top Contributor
Arrays ist eine Klasse aus einem anderen Package. Um genau zu sein ist es eine Helperklasse, die viele nützliche Funktionen für Arrays verschiedener Standardtypen bereitstellt.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
S Substrings finden Java Basics - Anfänger-Themen 5
A Fahrzeug ID in substrings teilen und abgleichen Java Basics - Anfänger-Themen 9
G Substrings in regulärem Ausdruck Java Basics - Anfänger-Themen 2
T Substrings in Strings ersetzen ohne java.lang.String Java Basics - Anfänger-Themen 8
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben