Genutzte Methoden in einen Frame einbauen

Liebe JAVA-Freunde,

ich bin neu in dem Metier, möchte mich aber wirklich sehr gerne in JAVA weiter fortbilden.

Ich hatte mir eine simple Aufgabe überlegt "Buchstaben zählen und verschieden große Buchstabenfolgen miteinander vergleichen". Dazu nutze ich einen "main String s" und drei verschiedene Teilstrings (s. im JAVA Code).

Könnt' Ihr mir vielleicht weiterhelfen?

1. Ich verstehe z.B. nicht, wieso "s.lastindexOf(?)" nicht funktioniert; ich würde sehr gerne die Platzierung des letzten Buchstabens vom Teilstring ausgeben lassen, aber es funktioniert einfach nicht (es gibt immer die Error-Meldung, dass das Symbol "s" nicht gefunden werden konnte, aber "s" habe ich doch definiert? Um das zu umgehen, nutze ich jetzt "s.indexOf(?) + ?.length()" um den Schluss herauszubekommen - aber hier wird doch auch "s" genutzt - ich hoffe, Ihr könnt mir weiterhelfen.

2. Gibt es eine Möglichkeit, um die Teilstrings mit der Buchstabenfolge "s" abzugleichen?
Also nicht nur "true" oder "false", sondern auch Teilergebnisse, wie "s" ist mit "X" zu xx%
identisch unter Angabe bis wohin bzw. ob ein/zwei/x Buchstaben verschieden sind:
Quasi wie ein Alignment.

In etwa so: s1= AAABBABBBBCCCCTTTT // X= AAAA
-> X ist mit s identisch von 1-3 mit Prozentangabe

3. Im Meshlab funktioniert der angegebene Code, es wäre jedoch wünschenswert alle Aufgaben in einem Frame darzustellen.

In etwa so:

1. Fenster: "Geben Sie die Buchstabenfolge ein" - OK
2. Abgleich mit diversen (vorgegebenen) Folgen
-> X = AAAA/Y=BBB/Z=TTC - drei oder mehr Buttons, um den Vergleich auszuführen
3. Ergebnis mit allen angegebenen Vorgaben (Länge der genutzten
Buchstabenfolge "s", Länge der einzelnen Folgen, Beginn und Ende der Folge
in "s", 100% fit = "true"-Angabe und ansonsten zu wie viel Prozent unter der
Angabe der identischen Buchstabenfolge, Substitution des Teilstrings im Main String mit dem neuen Zeichen wie "X")

Ich hoffe, ich habe es einigermaßen verständlich schreiben können ;) und freue mich auf Eure Hilfe und Anregungen!

Noch zum Code:
1. // ich füge Absätze ein, um mehr Überblick nach dem Compilieren zu haben
2. // bei "s.indexOf(X)+1)" habe ich (+1) angegeben, damit die Suche nicht bei 0 startet.

Vielen Dank und viele Grüße

Chris

Java:
public class Buchstaben {
public static void main(String[] args){
System.out.println();
System.out.print("Genutzte Buchstaben: AAAABBBBCCCTTTTC " );
System.out.println();
System.out.println();
String s="AAAABBBBCCCTTTTC";
System.out.print("Wie viele Buchstaben sind vorhanden? ");
System.out.println(s.length());
System.out.println();
System.out.print("Sind nachfolgende Buchstabenkombinationen vorhanden? ");
System.out.println();
System.out.println();
System.out.print("Ist X = (AAAA) vorhanden? ");
System.out.println(s.contains("AAAA"));
String X="AAAA";
System.out.print("Wie viele Buchstaben sind in X? ");
System.out.println(X.length());
System.out.print("Wo beginnt X in der genutzten Folge?__Bei: ");
System.out.println(s.indexOf(X)+1);
System.out.print("Wo endet X in der genutzten Folge?__Bei: ");
System.out.println(s.indexOf(X)+ (X.length()));
System.out.println();
System.out.print("Ist Y =(CCC) vorhanden? ");
System.out.println(s.contains("CCC"));
String Y= "CCC";
System.out.print("Wie viele Buchstaben sind in Y? ");
System.out.println(Y.length());
System.out.print("Wo beginnt Y in der genutzten Folge?__Bei: ");
System.out.println(s.indexOf(Y)+1);
System.out.print("Wo endet Y in der genutzten Folge?__Bei: ");
System.out.println(s.indexOf(Y)+ (Y.length()));
System.out.println();
System.out.print("Ist Z (TCT) vorhanden? ");
System.out.println(s.contains("TCT"));
String Z="TCT";
System.out.print("Wie viele Buchstaben sind in Z? ");
System.out.println(Z.length());
System.out.print("Wo beginnt Z in der genutzten Folge?__Bei: ");
System.out.println(s.indexOf(Z)+1);
System.out.print("Wo endet Z in der genutzten Folge?__Bei: ");
System.out.println(s.indexOf(Z)+ (Z.length()));
System.out.println();
System.out.print("MATCH-UP WITH X : " );
System.out.println(s.replace("AAA", "####X####--"));
System.out.print("MATCH-UP WITH Y : " );
System.out.println(s.replace("CCC", "####H2####--"));
System.out.print("MATCH-UP WITH Z : " );
System.out.println(s.replace("TCT", "####H3####--"));
}
}
 

ralfb1105

Bekanntes Mitglied
Hallo Chris,

da ich auch Neuling bin, erst einmal nur eine Antwort zu 1.) - Ich konnte das in meiner Umgebung ohne Probleme testen:

Java:
public class Buchstaben {

    public static void main(String[] args) {

        System.out.println();
        System.out.print("Genutzte Buchstaben: AAAABBBBCCCTTTTC ");
        System.out.println();
        System.out.println();
        String s = "AAAABBBBCCCTTTTC";
        System.out.print("Wie viele Buchstaben sind vorhanden? ");
        System.out.println(s.length());
        System.out.println();
        System.out.print("Sind nachfolgende Buchstabenkombinationen vorhanden? ");
        System.out.println();
        System.out.println();
        System.out.print("Ist X = (AAAA) vorhanden? ");
        System.out.println(s.contains("AAAA"));
        String X = "AAAA";
        System.out.print("Wie viele Buchstaben sind in X? ");
        System.out.println(X.length());
        System.out.print("Wo beginnt X in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(X) + 1);
        System.out.print("Wo endet X in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(X) + (X.length()));
        String XX = "A";
        System.out.println("RalfB: Wo endet X in der genutzten Folge?__Bei: " +s.lastIndexOf(XX));
        System.out.println();
        System.out.print("Ist Y =(CCC) vorhanden? ");
        System.out.println(s.contains("CCC"));
        String Y = "CCC";
        System.out.print("Wie viele Buchstaben sind in Y? ");
        System.out.println(Y.length());
        System.out.print("Wo beginnt Y in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Y) + 1);
        System.out.print("Wo endet Y in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Y) + (Y.length()));
        System.out.println();
        System.out.print("Ist Z (TCT) vorhanden? ");
        System.out.println(s.contains("TCT"));
        String Z = "TCT";
        System.out.print("Wie viele Buchstaben sind in Z? ");
        System.out.println(Z.length());
        System.out.print("Wo beginnt Z in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Z) + 1);
        System.out.print("Wo endet Z in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Z) + (Z.length()));
        System.out.println();
        System.out.print("MATCH-UP WITH X : ");
        System.out.println(s.replace("AAA", "####X####--"));
        System.out.print("MATCH-UP WITH Y : ");
        System.out.println(s.replace("CCC", "####H2####--"));
        System.out.print("MATCH-UP WITH Z : ");
        System.out.println(s.replace("TCT", "####H3####--"));

    }

}

Hier die dazugehörige Ausgabe:

Code:
Genutzte Buchstaben: AAAABBBBCCCTTTTC

Wie viele Buchstaben sind vorhanden? 16

Sind nachfolgende Buchstabenkombinationen vorhanden?

Ist X = (AAAA) vorhanden? true
Wie viele Buchstaben sind in X? 4
Wo beginnt X in der genutzten Folge?__Bei: 1
Wo endet X in der genutzten Folge?__Bei: 4
RalfB: Wo endet X in der genutzten Folge?__Bei: 3

Ist Y =(CCC) vorhanden? true
Wie viele Buchstaben sind in Y? 3
Wo beginnt Y in der genutzten Folge?__Bei: 9
Wo endet Y in der genutzten Folge?__Bei: 11

Ist Z (TCT) vorhanden? false
Wie viele Buchstaben sind in Z? 3
Wo beginnt Z in der genutzten Folge?__Bei: 0
Wo endet Z in der genutzten Folge?__Bei: 2

MATCH-UP WITH X : ####X####--ABBBBCCCTTTTC
MATCH-UP WITH Y : AAAABBBB####H2####--TTTTC
MATCH-UP WITH Z : AAAABBBBCCCTTTTC

Wie Du an der Zeile

RalfB: Wo endet X in der genutzten Folge?__Bei: 3

siehst funktioniert es wie erwartet... ich kann hier kein problem feststellen.

Ich habe Java 8 und Eclipse als IDE.

Gruß

Ralf
 
Hallo Ralf,
vielen Dank für Deine schnelle Rückmeldung.
Wenn ich Deinen Code eingebe funktioniert es auch bei mir.
Bei der Eingabe bei Zeile 23-25 ergibt sich trotzdem folgender Fehler:

"BS.java:25: error: cannot find symbol
System.out.println(s.lastindexOf(XX));
^
symbol: method lastindexOf(String)
location: variable s of type String
1 error"

Verstehe ich irgendwie nicht...
Woran könnte das liegen?

VG

Chris


Java:
public class BS {

    public static void main(String[] args) {

        System.out.println();
        System.out.print("Genutzte Buchstaben: AAAABBBBCCCTTTTC ");
        System.out.println();
        System.out.println();
        String s = "AAAABBBBCCCTTTTC";
        System.out.print("Wie viele Buchstaben sind vorhanden? ");
        System.out.println(s.length());
        System.out.println();
        System.out.print("Sind nachfolgende Buchstabenkombinationen vorhanden? ");
        System.out.println();
        System.out.println();
        System.out.print("Ist X = (AAAA) vorhanden? ");
        System.out.println(s.contains("AAAA"));
        String X = "AAAA";
        System.out.print("Wie viele Buchstaben sind in X? ");
        System.out.println(X.length());
        System.out.print("Wo beginnt X in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(X) + 1);
        System.out.print("Wo endet X in der genutzten Folge?__Bei: ");
        String XX ="AAAA";
        System.out.println(s.lastindexOf(XX));
        System.out.println();
        System.out.print("Ist Y =(CCC) vorhanden? ");
        System.out.println(s.contains("CCC"));
        String Y = "CCC";
        System.out.print("Wie viele Buchstaben sind in Y? ");
        System.out.println(Y.length());
        System.out.print("Wo beginnt Y in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Y) + 1);
        System.out.print("Wo endet Y in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Y) + (Y.length()));
        System.out.println();
        System.out.print("Ist Z (TCT) vorhanden? ");
        System.out.println(s.contains("TCT"));
        String Z = "TCT";
        System.out.print("Wie viele Buchstaben sind in Z? ");
        System.out.println(Z.length());
        System.out.print("Wo beginnt Z in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Z) + 1);
        System.out.print("Wo endet Z in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Z) + (Z.length()));
        System.out.println();
        System.out.print("MATCH-UP WITH X : ");
        System.out.println(s.replace("AAA", "####X####--"));
        System.out.print("MATCH-UP WITH Y : ");
        System.out.println(s.replace("CCC", "####H2####--"));
        System.out.print("MATCH-UP WITH Z : ");
        System.out.println(s.replace("TCT", "####H3####--"));

    }

}
 
Danke!! Jetzt kann ich es zumindest compilieren, aber es wird mir dennoch der falsche Wert angegeben.

"Ist X = (AAAA) vorhanden? true
Wie viele Buchstaben sind in X? 4
Wo beginnt X in der genutzten Folge?__Bei: 1
Wo endet X in der genutzten Folge?__Bei: 0
--> müsste ja aber 4 lauten..."

VG
 
Zuletzt bearbeitet:

mihe7

Top Contributor
a.lastIndexOf(b) gibt den Index des letzten Vorkommens der Zeichenfolge b in a zurück (oder -1, falls b überhaupt nicht in a vorkommt).

Wo beginnt "AAA" in der Zeichenfolge "AAA"? Richtig, bei Index 0, daher bekommt ihr auch 0 ausgegeben.

Quizfrage: wie müsste man also lastIndexOf richtig verwenden?
 
Ja, aber ich suche ja nicht den Anfang von X, sondern das Ende. Mit "s.lastIndexOf(X)" suche ich doch das letzte Vorkommen von X im Main String "s". Wenn ich also nach "AAAA" suche und diese Folge kommt in "s" an Stelle 4 das letzte mal vor, stimmt doch die Überlegung, oder?
Bitte aufklären - vielen Dank!

VG
 

mihe7

Top Contributor
Wenn ich also nach "AAAA" suche und diese Folge kommt in "s" an Stelle 4 das letzte mal vor, stimmt doch die Überlegung, oder?
Nein. Wenn s="AAAABBBBCCCTTTTC", dann kommt "AAAA" das einzige (und damit auch das letzte) mal an Stelle 0 vor.

Wäre s="AAAABAAAACDEF", dann wäre s.lastIndexOf("AAAA") == 5, dann das erste mal kommt es an Stelle 0 vor, das zweite (und letzte) mal an Stelle 5.
 
Hallo mihe7,
danke für die Aufklärung! Weill ich "AAAA" als Ganzes betrachten muss, kommt es logischerweise auch nur am Index 0 vor - ok, verstanden. Danke! Aber wie kann ich es dann am besten machen, dass mir der letzte Buchstabe von X ausgegeben wird?

@ Robat: Eigentlich war das als ernst gemeinte Frage gedacht und nicht als "Lachnummer". Schade - eine Hilfe Deinerseits wäre sicherlich hilfreicher gewesen ;)
 

Robat

Top Contributor
@JAVA-Neuling17 Es war auch eine ernst gemeinte Antwort. Wenn du das Ende des letzten Vorkommens haben möchtest, musst du dir einen eigenen Algorithmus einfallen lassen und diesen implementieren. Mit lastIndexOf wirst du da nicht weit kommen - siehe Antwort von @mihe7 .. Und das es eine gute Übung ist, ist auch ernst gemeint.
 

Robat

Top Contributor
2) klingt ein bisschen nach LCS-Problem .. und danach einfach die Länge der LCS mit der Länge des Patterns (zB: "AAAA" ) vergleichen .. dann kannst du ja den Prozentsatz bestimmen
3) Würde ich erstmal hinten anstellen. Wenn dein Programm richtig modelliert ist, ist es am Ende egal, ob die Ausgabe auf der Konsole oder einer GUI passiert. Setz dich erstmal an dem Algorithmus und die Ausgabe kann später immer noch "verschönert" werden
 

mihe7

Top Contributor
1) s.lastIndexOf(X) + X.length(); natürlich nur, wenn s.lastIndexOf(X) >= 0 ist.
2) 3) s. Antwort von @Robat

Nachtrag: wenn Du den Index des letzten Buchstabens von X haben willst, musst Du natürlich noch 1 abziehen.
 
Hallo nochmal!
Also ich habe mich mal kundig gemacht und bzgl. LCS-Problem und Prozentangabe informiert.
Habe hier jetzt zwei Programmcodes; einmal zur Wiedergabe der identischen Buchstaben (allerdings ergibt sich hieraus nur die Anzahl der gleichen Buchstaben und nicht die Länge der Folge "X", bis zum ersten Fehler in "s"...)

z.B.
s = AAABBBB X= AACB --> Ergebnis: AAB (gleich Anzahl an Buchstaben) und nicht AA (Match bis zum 1. Fehler)

und einmal zur Berechnung der Identität in Prozent.

Hierzu muss ich die zu untersuchende Sequenz alleridngs immer eingeben. Könnt' Ihr mir helfen, wie ich beide Methoden in einem Code verbinde und meine gegebenen Sequenzen miteinbinden kann?

Ich freue mich auf eure Rückmeldungen und Ratschläge!

Viele Grüße

Hier die drei Codes:

Code BS:
Java:
public class BS {
    public static void main(String[] args) {
        System.out.println();
        System.out.print("Genutzte Buchstaben: AAAABBBBCCCTTTTC ");
        System.out.println();
        System.out.println();
        String s = "AAAABBBBCCCTTTTC";
        System.out.print("Wie viele Buchstaben sind vorhanden? ");
        System.out.println(s.length());
        System.out.println();
        System.out.print("Sind nachfolgende Buchstabenkombinationen vorhanden? ");
        System.out.println();
        System.out.println();
        System.out.print("Ist X = (AAAA) vorhanden? ");
        System.out.println(s.contains("AAAA"));
        String X = "AAAA";
        System.out.print("Wie viele Buchstaben sind in X? ");
        System.out.println(X.length());
        System.out.print("Wo beginnt X in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(X) + 1);
        System.out.print("Wo endet X in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(X) + X.length());
        System.out.println();  
        System.out.print("Ist Y =(CCC) vorhanden? ");
        System.out.println(s.contains("CCC"));
        String Y = "CCC";
        System.out.print("Wie viele Buchstaben sind in Y? ");
        System.out.println(Y.length());
        System.out.print("Wo beginnt Y in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Y) + 1);
        System.out.print("Wo endet Y in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Y) + Y.length());
        System.out.println();
        System.out.print("Ist Z (TCT) vorhanden? ");
        System.out.println(s.contains("TCT"));
        String Z = "TCT";
        System.out.print("Wie viele Buchstaben sind in Z? ");
        System.out.println(Z.length());
        System.out.print("Wo beginnt Z in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Z) + 1);
        System.out.print("Wo endet Z in der genutzten Folge?__Bei: ");
        System.out.println(s.indexOf(Z)+Z.length());
        System.out.println();
        System.out.print("MATCH-UP WITH X : ");
        System.out.println(s.replace("AAA", "####X####--"));
        System.out.print("MATCH-UP WITH Y : ");
        System.out.println(s.replace("CCC", "####H2####--"));
        System.out.print("MATCH-UP WITH Z : ");
        System.out.println(s.replace("TCT", "####H3####--"));
    }
}

Code Buchstabenwiedergabe (lcs2):

Java:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class  lcs2{
      public String lcs(String str1, String str2){
        int l1 = str1.length();
        int l2 = str2.length();
        int[][] arr = new int[l1 + 1][l2 + 1];
        for (int i = l1 - 1; i >= 0; i--)
        {for (int j = l2 - 1; j >= 0; j--)
            {if (str1.charAt(i) == str2.charAt(j))
                 arr[i][j] = arr[i + 1][j + 1] + 1;
                  else arr[i][j] = Math.max(arr[i + 1][j], arr[i][j + 1]);
            }
        }
        int i = 0, j = 0;
        StringBuffer sb = new StringBuffer();
        while (i < l1 && j < l2)
        {
            if (str1.charAt(i) == str2.charAt(j))
            {
                sb.append(str1.charAt(i));
                i++;
                j++;
            }
            else if (arr[i + 1][j] >= arr[i][j + 1])
                i++;
            else
                j++;
        }
        return sb.toString();
    }
        public static void main(String[] args) throws IOException{  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Test auf Identität der Buchstabenfolgen miteinander\n");
        System.out.println("\nFolge 1");
        String str1 = br.readLine();
        System.out.println("\nFolge 2");
        String str2 = br.readLine();
        lcs2 obj = new lcs2();
        String result = obj.lcs(str1, str2);
        System.out.println("\nErgebnis : "+ result);
    }
}

Code Prozentangabe (lcs_prozent):

Java:
public class lcs_prozent {
  public static double similarity(String s1, String s2) {
    String longer = s1, shorter = s2;
    if (s1.length() < s2.length()) {
      longer = s2; shorter = s1;
    }
    int longerLength = longer.length();
    if (longerLength == 0) { return 1.0; /* both strings are zero length */ }
    return (longerLength - editDistance(longer, shorter)) / (double) longerLength;
  }
  public static int editDistance(String s1, String s2) {
    s1 = s1.toLowerCase();
    s2 = s2.toLowerCase();
    int[] costs = new int[s2.length() + 1];
    for (int i = 0; i <= s1.length(); i++) {
      int lastValue = i;
      for (int j = 0; j <= s2.length(); j++) {
        if (i == 0)
          costs[j] = j;
        else {
          if (j > 0) {
            int newValue = costs[j - 1];
            if (s1.charAt(i - 1) != s2.charAt(j - 1))
              newValue = Math.min(Math.min(newValue, lastValue),
                  costs[j]) + 1;
            costs[j - 1] = lastValue;
            lastValue = newValue;
          }
        }
      }
      if (i > 0)
        costs[s2.length()] = lastValue;
    }
    return costs[s2.length()];
  }
  public static void printSimilarity(String s, String t) {
    System.out.println(String.format(
      "%.3f Prozent sind identisch bei \"%s\" and \"%s\"", similarity(s, t), s, t));
  }
  public static void main(String[] args) {
    printSimilarity("AAABBBB", "AACB");
    }
    }
 
Hallo mihe7,
komme leider erst jetzt wieder zum Schreiben.

Mein Hauptproblem: Ich komme leider irgendwie nicht weiter, wie ich am besten meinen Main String "s" und meine gesuchten Buchstabenfolgen (X,Y,Z) in die beiden genannten Codes einbringen kann bzw. die beiden Codes in mein ursprüngliches Programm miteinbinde...also, dass ich nicht erst zwei Vergleichssequenzen eingeben muss, sondern das Programm autonom meine Beispiele berechnet und mir die Identität bzw. auch die vorkommenden Buchstaben mitteilt.

Dann: [...] wie man in zwei Zeichenketten die Anzahl der ersten gleichen Buchstaben ermittelt?[...]

Genau, das ist dann ein weiteres Problem. Wie kann ich es eindeutig vermerken, dass er mir die Identität und die max. Buchstabenfolge meines Teilstrings wiedergibt? Im jetzigen Zustand bestimmt er ja nur die vorkommenden Buchstaben und matched diese mit dem Vergleich, jedoch gibt dies ja nicht den eigentlichen Sinn wieder. Ich möchte ja eben wissen, wann die zu vergleichende Sequenz im Main String abbricht bzw. von wo bis wo die längste Buchstabenfolge vorkommt...

Kannst Du mir da weiterhelfen?

Zudem wäre es auch schön, wenn man das, dann fertige, genutzte Programm (auch wenn nur sehr simpel) mit einer GUI darstellen könnte, man also nicht erst die Seuquenzen und Folgen im Programm Code eintragen und compilieren muss, sondern ein eigenständiges Prigramm hat, in welches Genanntes eingegeben und mir mit Buttons und co. die Ergebnisse veranschaulicht werden. Hättest Du hier auch paar Anregungen für mich bzw. vielleicht sogar einen Beispiel Frame o.d.G., den ich erweitern kann?

Vielen Dank und viele Grüße.
 

mihe7

Top Contributor
In der Klasse lcs_prozent gibt es eine statische Methode similarity. Diese kannst Du, ohne ein Objekt von lcs_prozent erzeugen zu müssen, in Deiner main-Methode verwenden. Dazu schreibst Du z. B. einfach double similarity = lcs_prozent.similarity("AAABBBB", "AACB");. Anschließend kannst Du den Wert von similarity einfach über System.out ausgeben.

Klasse lcs2 enthält keine statische Methode. Daher musst Du zuerst mit new ein Objekt erzeugen und dann die Methode dieses Objekts verwenden. Langform:
Java:
lcs2 obj = new lcs2();
String slcs = lcs2.lcs("AAABBBB", "AACB");
Oder kurz: String slcs = new lcs2().lcs("AAABBBB", "AACB");

wie man in zwei Zeichenketten die Anzahl der ersten gleichen Buchstaben ermittelt?
Dazu schreibt man sich einfach eine Methode, z. B.:
Java:
public static int longestCommonStart(String s1, String s2) {
    int count = 0;
    int max = Math.min(s1.length(), s2.length());
    while (count < max && s1.charAt(count) == s2.charAt(count)) {
        count++;
    }
    return count;
}
Die kannst Du in main wieder direkt verwenden.

mit einer GUI darstellen
Programmierung von GUIs hat eigene Fallstricke. Daher ist es Voraussetzung, dass man die Grundlagen beherrscht. Ansonsten hat man zu viele Baustellen und sieht den Wald vor lauter Problemen nicht mehr.

Du solltest Dich erstmal mit Klassen, Methoden und Objekten auseinandersetzen. Wie Du Dein Programm strukturierst, wie man Probleme algorithmisch löst usw.

Beispielsweise solltest Du anfangen, Deine main-Methode mit mehreren, kleineren Methoden zu strukturieren. Deine Ausgaben musst Du auch erst dynamisch machen. Das hier:
Java:
        System.out.print("Genutzte Buchstaben: AAAABBBBCCCTTTTC ");
        System.out.println();
// und kurz darauf:
        String s = "AAAABBBBCCCTTTTC";
kann kaum noch schlimmer werden. Fang mal an, das alles allgemeiner zu gestalten:
Java:
        String s = "AAAABBBBCCCTTTTC";
        System.out.println("Genutzte Buchstaben: " + s);

Der Ansatz, die Variablen fest in main stehen zu haben, ist für den Anfang nicht der schlechteste. Wenn Du Dein Programm über die Befehlszeile aufrufst, dann könnte der nächste Schritt darin bestehen, die Befehlszeilenargumente zu verwenden (das args-Array).

Wenn Du dann ein UI bauen willst, kannst Du das erst einmal textbasiert auf der Konsole machen, s. z. B. die main-Methode der lcs2-Klasse.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
G JavaFX Verständnisfrage mit parametrisierten Methoden und FXML AWT, Swing, JavaFX & SWT 21
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
I JAVAFX - CSS - automatische Property- und Methoden-Vorlagen in Eclipse AWT, Swing, JavaFX & SWT 17
P X extends TreeView - eigene Methoden AWT, Swing, JavaFX & SWT 5
D JavaFX Java Methoden mit JavaFX Methode kommunizieren lassen? AWT, Swing, JavaFX & SWT 3
J JavaFX Mehrfache Benutzung von Methoden einer Klasse AWT, Swing, JavaFX & SWT 17
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
S 2 Paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
M Swing Vorgehen beim Aufruf der Klassen/Methoden AWT, Swing, JavaFX & SWT 7
L Rekursive Methoden -> Error: StackOverFlow AWT, Swing, JavaFX & SWT 2
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
S 2 paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
K Stundenplan, Kalender Methoden AWT, Swing, JavaFX & SWT 2
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
B Ablauf der paint-Methoden von JComponents AWT, Swing, JavaFX & SWT 20
B Zu welchem Zeitpunkt sind Methoden anwendbar AWT, Swing, JavaFX & SWT 3
F JPanel mit zwei Methoden her beschreiben. AWT, Swing, JavaFX & SWT 8
B Eigene Methoden in TABs einfügen AWT, Swing, JavaFX & SWT 8
F Initialisieren von Fenstern über Methoden AWT, Swing, JavaFX & SWT 3
R eigene Methoden für Buttons? AWT, Swing, JavaFX & SWT 11
M Alle Frame Methoden AWT, Swing, JavaFX & SWT 2
B Bedeutung der Methoden von Klasse WindowListener AWT, Swing, JavaFX & SWT 4
J eclipse/Visual Editor: Auf Felder/Methoden vom Hauptframe zugreifen AWT, Swing, JavaFX & SWT 4
S paint() in anderen Methoden AWT, Swing, JavaFX & SWT 5
G Großbuchstaben abfragen mit Keycode Methoden AWT, Swing, JavaFX & SWT 5
A TreeNode abgeleitet -> Wie komme ich an meine Methoden? AWT, Swing, JavaFX & SWT 2
S Methoden implementieren AWT, Swing, JavaFX & SWT 7
P add Methoden bei Swing AWT, Swing, JavaFX & SWT 2
M Zugriff auf Methoden aus einem ActionListener AWT, Swing, JavaFX & SWT 2
B fire methoden auch bei defaultTableModel? AWT, Swing, JavaFX & SWT 5
G Probleme mit static Methoden in JFrame/JDialog AWT, Swing, JavaFX & SWT 7
G jcombo-box getters und setters methoden AWT, Swing, JavaFX & SWT 5
G Grafik auf mehrere Methoden/Klassen zerlegen AWT, Swing, JavaFX & SWT 2
J JTree/TreeModel add/delete Methoden AWT, Swing, JavaFX & SWT 2
S Methoden return wert? AWT, Swing, JavaFX & SWT 7
N JDK1.4- Überladen d. Methoden getValue setValue von JSpinner AWT, Swing, JavaFX & SWT 2
J instanceof von einem Interface und aufrufen der Methoden AWT, Swing, JavaFX & SWT 5
G Grafik auf JComponent ohne Überschreiben von Paint-Methoden AWT, Swing, JavaFX & SWT 4
G ActionListener und Methoden-Aufruf aus anderen Klassen AWT, Swing, JavaFX & SWT 3
B ActionListener und Statische Methoden AWT, Swing, JavaFX & SWT 3
D Methoden zentral in einer Datei ablegen AWT, Swing, JavaFX & SWT 2
G zeitkontrollierte Methoden ??? AWT, Swing, JavaFX & SWT 6
M methoden.... AWT, Swing, JavaFX & SWT 2
MiMa Reaktion auf einen SplitScreenTrenner? AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
U Gibt es eine Möglichkeit statt concatenate einen anderen Befehl zu nutzen? AWT, Swing, JavaFX & SWT 9
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
J Gibt es einen Grund für 16x16 anstatt z.B. 15x15 Tiles ? AWT, Swing, JavaFX & SWT 10
O Soll ich einen JEditorPane verwenden ? AWT, Swing, JavaFX & SWT 5
L JavaFX JavaFX stürtzt durch einen Server#connect Exception AWT, Swing, JavaFX & SWT 3
Drachenbauer Hauptfenster erhält schmale Streifen rechts unt unten, wenn ich einen JDialog hinzufüge. AWT, Swing, JavaFX & SWT 19
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
P Wie lese ich einen jRadioButton aus? AWT, Swing, JavaFX & SWT 21
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
H JavaFX aus der .fxml Datei einen Konstruktor bedienen AWT, Swing, JavaFX & SWT 3
H JavaFX via .fxml einen abgeleiteten Button erstellen... AWT, Swing, JavaFX & SWT 4
S Swing GANZE Row auf einen Schlag einfärben AWT, Swing, JavaFX & SWT 2
B JavaFX Wie programmiere ich hier einen "Weiter" Button? AWT, Swing, JavaFX & SWT 11
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
L Wie realisiere ich einen Controller AWT, Swing, JavaFX & SWT 1
A Slider soll einen Wert übergeben AWT, Swing, JavaFX & SWT 1
F JavaFX Erstelle einen Wald AWT, Swing, JavaFX & SWT 6
Thallius Swing Aufgabe für einen der gerne Tüftelt. AWT, Swing, JavaFX & SWT 4
M JavaFX Wie füge ich zu einer WebEngine einen Flash Player hinzu AWT, Swing, JavaFX & SWT 3
G AWT Wie bekomme ich einen zeitgesteuerten robot hin? AWT, Swing, JavaFX & SWT 6
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
S Bei BoxLayout haben hinzugefügten Jpanels einen Versatz/Space AWT, Swing, JavaFX & SWT 0
D Graphics2D einen Bereich füllen AWT, Swing, JavaFX & SWT 1
T Einen Variablen Wert in einem TextField AWT, Swing, JavaFX & SWT 4
M Swing Mit Java in der GUI einen Belegungsplan einfügen AWT, Swing, JavaFX & SWT 23
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
H Swing Hintergrundbild in einen JFrame einfügen AWT, Swing, JavaFX & SWT 7
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
A Swing JTextField durch einen JButton leeren AWT, Swing, JavaFX & SWT 15
J Swing JTable-Event für einen Select?? AWT, Swing, JavaFX & SWT 3
P Swing RadioButtons - nur einen auswählen AWT, Swing, JavaFX & SWT 3
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
J JFrame in einen JFrame anzeigen AWT, Swing, JavaFX & SWT 2
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
Madlip SWT Tree mit einen Klick alles ausklappen AWT, Swing, JavaFX & SWT 3
D JTree nach Klick auf einen Hyperlink aktualisieren AWT, Swing, JavaFX & SWT 3
M JProgressBar für einen Thread AWT, Swing, JavaFX & SWT 14
T Einen Kreis anzeigen AWT, Swing, JavaFX & SWT 14
M SWT /Jface Wann einen ColumnLabelProvider benutzen? AWT, Swing, JavaFX & SWT 2
-horn- WorldWindJava+JOGL soll einen animierten Graphen anzeigen, wie? AWT, Swing, JavaFX & SWT 4
X Einem JFrame einen Dialog als Parent setzen. Möglich? AWT, Swing, JavaFX & SWT 4
A 2D-Grafik Alles auf einen Panel Zeichnen AWT, Swing, JavaFX & SWT 5
P 2D-Grafik Neue Farbe für einen Teilbereich einer Linie? AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben