Hashtable probleme

Status
Nicht offen für weitere Antworten.

sim26

Aktives Mitglied
Hallo alle,

ich bin ein Biologe Doktorand, soll ich ein paar Programme mit Java schreiben.
Bis jetzt hat geklappt aber mit 1000 Schwierigkeiten aber irgendwie macht schon spaß ;-)

Also ich muss jetzt ein Programme schreiben die so macht

-->Ich habe ein Sequence z.b.

ACGCTCGCTGATATAT


Wenn ich die Nr. „x“ z.b. zu meine Programme gebe dann soll schreiben die ersten x Buchstaben und er merkt das das ist nur ein mal gibt "1" dann er schreibt in den nächsten Linie noch mal die x aber minus die erste Buchstabe von dem ersten x plus ein neue Buchstabe und er vergleicht das mit dem ersten wenn das ist das gleiche dann wir haben 2 wenn nicht dann ein 1 und soweiter.


D.h.
Sequence: ACGCTCGCTGATATAT

X =3

Erwartete Ergebnisse sind:

ACG 1
CGC 1
GCT 1
CTC 1
TCG 1
CGC 2
......
……....
...


Habe schon was geschrieben und hat geklappt, aber das Programm schreibt zu mir nicht die ganz Sequence ACA z.b aber er schreibt und zählt die Buchstaben getrennt und nicht zusammen  ich bin seit 3 tage damit beschäftigt aber habe nix gefunden, könnte ihr mich helfen bitte?






Code:
package com.javatutor.insel.ui.layout;
import java.awt.*;
import java.text.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.util.Map;
import java.util.HashMap;
import java.io.*;

class Counter {
  int r = 1;

  public String toString() {
      return Integer.toString(r);
  }
}

public class FirstSample
{
    String Sequence;
  public static void main( String[] args )
  {
   
      
JFrame f=new JFrame("My Application");
    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    f.setLayout( new GridLayout(10, 2, 2, 2) );
    
    f.add( new JLabel("                    yoursequence (Label)     ") );

    
    final JTextField tf = new JTextField(20 );
     f.add( tf );
    //f.add( new JLabel(" "), BorderLayout.LINE_START);
    
    f.add( new JLabel("                Seq auswählen: "), BorderLayout.LINE_START);
    
    
   JTextField bd= new JTextField(20 );
       f.add(bd);
                f.add( new JLabel("                   Ergebnisse (Label)     ") );
 
                            final JLabel sb = new JLabel("Ergebnisse");
                             f.add(sb);
                            sb.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
                                     f.add( new JLabel("                      ") );
                                     f.add( new JLabel("                        ") );
                                     f.add( new JLabel("                       ") );
                                     f.add( new JLabel("                        ") );
                     JButton b= new JButton("Start");
                    f.add(b);
                    ActionListener a1= new ActionListener() {
                     public void actionPerformed( ActionEvent e ) {
                    int nan = (int)((Double.parseDouble(tf.getText()))); 
                             
      int k=nan;
      int m=0;
      int j;
      String Sequence="GAATTGATAGGGA";
     Hashtable hm = new Hashtable();
      for(int i=0;i<Sequence.length();i++){ 
          for ( j=m ;j<nan;j++){
              
               if (hm.containsKey(Sequence.charAt(j)))
           
        
 ((Counter) hm.get(Sequence.charAt(j))).r++;       
          else      
        hm.put(Sequence.charAt(j), new Counter());     
          }
          nan=nan+1;
        m=m+1;
          if (m==Sequence.length()-k+1){
          break;
          }
        
         System.out.println(hm);   
         
         
    
          
     
                    sb.setText(nan + "" );
                            }
                     }
                         };
                     b.addActionListener(a1);
     
     
                                                             JButton c= new JButton("Quit");
                                                             f.add(c);
                                                            ActionListener a3=new ActionListener(){
                                                                public void actionPerformed(ActionEvent e){
                                                                    System.exit(0);
                                                                }
                                                            };
                                                            c.addActionListener(a3);
    
  
    
  
    
    
    f.pack();
    f.setVisible( true );
  }
}


Vielen Danke
 
B

bygones

Gast
das Klassendesign ist nicht so prickelnd ;-)

Die Klasse Counter ist im Grunde unnötig. Wichtig ist deine for schleife in Abhängigkeit von X laufen zu lassen und dann nicht einen, sondern X Buchstaben zu zählen

Code:
for(int i = 0; i < sequences.length; i += x) {
  String subsequence = sequences.substring(i, i+x); // hier noch testen, ob man nicht über die Länge des String rauskommt

  if(map.containsKey(subsequence)) {
    // wert um eins erhöhen - einfache Integer reicht, man braucht keine neue Klasse
  }
  else {
    map.put(subsequence, Integer.valueOf(1));
 }
}

hast du dir schonmal BioJava angeschaut ? vor ein paar Jahren war es noch nicht der Brüller, vll hat sich mittlerweilen schon was geändert :)
 

sim26

Aktives Mitglied
vielen danke erstes Mal deathbyaclown, das finde ich so wunderbar dass Sie mich geantwortet haben (bin voll Happy).

Ich probiere mal, dann sage ich bescheid ob geklappt hat!

--------------------

Das Klassendesign ist unpraktisch und sieht für Jemand erste angefangen die Maus zu bewegen. Ich weiß das, aber ich will mich verbessern und auch den Java richtig lernen.
Ich bemühe mich schon. :)
 

sim26

Aktives Mitglied
Hallo deathbyaclown,

also ich habe probiert seit Gestern mit Ihren Vorschlag aber irgendwie bin zu dumm, hat gar nicht funktioniert bei mir. Er gibt mir was ich nicht brauche und noch dazu mein Chef hat gemeint das ist besser wenn ich dass mache durch Mehrdimensionale Arrays und nicht mit Hashtable, (weil sowieso wir werden nur mit 4 Buchstaben arbeiten ACTG von DNA) .
Von Array Geschichte habe ehrlich gesagt auch nicht viel Ahnung bin gerade dabei das alles zu verstehen aber ich habe den Gefühle das werde ich nicht schaffen!!!!!!!!
:oops: :oops:
 
B

bygones

Gast
dann sollte dein chef (btw hier im board ist es so üblich *g) genauer erklären wie er das mit einem mehrdimensionalen Array meint... Bei einem array benötigst du einen index um auf einen eintrag zu zugreifen, z.b. array[1] und so.
Da du aber hier mit Strings arbeitest... wenn du nur einzelne Aminosäuren zählst, so kannst du natürlich ein Array nehmen, wobei du halt dann die indizes 0-3 (für ACTG), sobald du aber Sequenzen von Aminosäuren nimmst ufert das aus.
Daher find ich intuitiv den mehrdim. Array unsinnig
 
S

SlaterB

Gast
> ich habe probiert seit Gestern mit Ihren Vorschlag aber irgendwie bin zu dumm, hat gar nicht funktioniert bei mir

mit solchen Aussagen kommt man nicht weit, WAS hat nicht funktioniert?
Exception?, Beispiel und wie war da die Ausgabe/ welche wurde stattdessen erwartet?

Tipp: gar nicht erst mit GUI und Eingabefeldern usw. aufhalten, dass dauert viel zu lange zum testen,
in einem Konsolen-Programm den Algorithmus testen und später dann in die GUI einbauen

ein Beispiel in dem man auch sieht wie der Vorschlag von deathbyaclown funktioniert:
(ein Fehler war da aber tatsächlich drin, es wurde immer x Felder weitergesprungen statt nur einem)

Code:
public class Test {

	public static void main(String[] args) throws Exception {
		String s = "ACTAAAACT";
		int x = 3;

		Hashtable map = new Hashtable();
		for (int i = 0; i < s.length()-x+1; i++) {

			String sub = s.substring(i, i + x);
			Integer anz = (Integer) map.get(sub);

			if (anz == null) {
				anz = new Integer(1); // mit 1 anfangen
			} else {
				anz = new Integer(anz.intValue()+1);  // erhöhen
			}
			// später kann man mal das ständige Erzeugen der Integer-Objekte durch etwas
			// performanteres ersetzen

			System.out.println(sub+"  "+anz);
			map.put(sub,anz);
		}
	}

}

----------------------------------

die Array-Variante ist auch interessant,
ist ja eigentlich deine Aufgabe, da will ich mal nicht zu viel verraten,

aber starte doch bei x = 1, wie viele verschiedene Kombinationen gibts dann?
wie siehts bei x = 2, x = 3 aus?
so viele sind das gar nicht, da reicht dann ein Array,

du musst dir nur überlegen wie du von einem Buchstaben auf den Index im Array kommst,
z.B. von A auf 0, um auf das 0.te Feld im Array zugreifen zu können

im Zweifel schreibst du dir eine simple Operation
Code:
int getIndex(char x) {
  if (x == 'A') {
    return 0;
  } else {
    ..
  }
}
in dem Array steht dann die bisherige Anzahl der Kombination
 
B

bygones

Gast
na super - dann hat man wieder ne Art Mapping und warum den extra aufwand wenn man das mit einer map simpel lösen kann ?

ps: stimmt ich bin die Triplets durchgegangen und nicht eine 3er Kombination von jeder nachfolgenden position
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Probleme mit java.util.hashtable Java Basics - Anfänger-Themen 10
O HashTable kann ohne Performance-Verlust in Multithreaded-Anwendungen eingesetzt werden. Java Basics - Anfänger-Themen 6
B Hashtable Java Basics - Anfänger-Themen 3
H Klassen Auf eine Hashtable aus mehreren Klassen zugreifen Java Basics - Anfänger-Themen 12
arti28 Verkaufsautomat Enumerations HashTable Java Basics - Anfänger-Themen 1
D Hashtable Java Basics - Anfänger-Themen 4
K Hashtable mit eigenen Konstruktor Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
T Collections Hashtable gezielt auslesen. Java Basics - Anfänger-Themen 13
B HashTable & Strings übergeben Java Basics - Anfänger-Themen 4
A Input/Output Hashtable Ausgabe Java Basics - Anfänger-Themen 1
P Key anhand von Value finden (Hashtable) Java Basics - Anfänger-Themen 3
S Hashtable Java Basics - Anfänger-Themen 2
T Werte in Hashtable neu zuweisen Java Basics - Anfänger-Themen 3
P 2D Welt, Hashtable Java Basics - Anfänger-Themen 5
D Hashtable/Hashmap Java Basics - Anfänger-Themen 2
D In Hashtable suchen Java Basics - Anfänger-Themen 3
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
L Hashtable nicht wirklich geeignet für mein Vorhaben? Java Basics - Anfänger-Themen 3
P | zu einer hashtable hinzufügen Java Basics - Anfänger-Themen 7
D java.lang.outofmemoryerror java heap space bei Hashtable Java Basics - Anfänger-Themen 3
D Hashtable Value(Array) in String und dann Ausgeben Java Basics - Anfänger-Themen 23
S Fortsetzung meiner frage (hashtable) danke vorab an alle Java Basics - Anfänger-Themen 3
S BITTE UM HILFE HASHTABLE/import java.util.Hashtable in Ecplipse Java Basics - Anfänger-Themen 12
A Verschachtelte Hashtable ausgeben. Java Basics - Anfänger-Themen 3
D Eine Liste wie ne HashTable, nur mit auslesbaren Key . . . Java Basics - Anfänger-Themen 31
G Hashtable füllen Java Basics - Anfänger-Themen 2
G Gesamte Hashtable ausgeben Java Basics - Anfänger-Themen 3
L Arbeiten mit Vectoren in einer Hashtable Java Basics - Anfänger-Themen 2
A Unterschied zwischen HashMap und Hashtable Java Basics - Anfänger-Themen 20
G Sortierter Hashtable? Java Basics - Anfänger-Themen 3
D Eine abgeänderte Hashtable erstellen Java Basics - Anfänger-Themen 3
G Hashtable -> Ordnerstruktur Java Basics - Anfänger-Themen 10
M Hashtable gleichzeitigen Zugriff verhindern Java Basics - Anfänger-Themen 11
C Problem mit Hashtable Java Basics - Anfänger-Themen 6
M Hashtable an Datenbank schicken Java Basics - Anfänger-Themen 3
F Hashtable mit String[] als value Java Basics - Anfänger-Themen 2
F invertierung einer Hashtable Java Basics - Anfänger-Themen 4
P HashTable auslesen und in createDocument ausgeben Java Basics - Anfänger-Themen 4
T Warum kann Hashtable get Methode nicht funktionieren? Java Basics - Anfänger-Themen 3
N NullPointerException bei meiner Hashtable Java Basics - Anfänger-Themen 2
M Hashtable oder Hashmap mit Inhalt vorbelegen Java Basics - Anfänger-Themen 2
C Hashtable-get Java Basics - Anfänger-Themen 2
K Hashtable mischen (shuffeln)? Java Basics - Anfänger-Themen 4
H Objekte in einer Hashtable am einfachsten sortieren Java Basics - Anfänger-Themen 13
G Hilfe! Wie Kreise in Hashtable ablegen und wieder auslesen? Java Basics - Anfänger-Themen 2
G unterschied hashtable und hashmap? Java Basics - Anfänger-Themen 3
A Hashtable - 3 Suchmöglichkeiten Java Basics - Anfänger-Themen 4
G hashtable und unsafe, unchecked Code Java Basics - Anfänger-Themen 3
L Hashtable Verständnis Frage Java Basics - Anfänger-Themen 4
R Hashtable ohne Values Java Basics - Anfänger-Themen 5
G Hashtable oder was sonst? Java Basics - Anfänger-Themen 8
S Value von ein Hashtable collectionen Java Basics - Anfänger-Themen 3
S Hashtable & Datei Java Basics - Anfänger-Themen 4
W Hashtable Integer als Value Java Basics - Anfänger-Themen 6
N ein array in der hashtable Java Basics - Anfänger-Themen 6
W Hashtable oder was Anderes Java Basics - Anfänger-Themen 8
I Warum ließt er den Inhalt der Hashtable nicht? Java Basics - Anfänger-Themen 5
G die keys einer Hashtable sortieren Java Basics - Anfänger-Themen 15
D Hashtable gibt eigenartiges wieder Java Basics - Anfänger-Themen 2
G hashtable jeden wert mit trim() bearbeiten Java Basics - Anfänger-Themen 3
K Objekte und deren Anzahl speichern, hashtable? Java Basics - Anfänger-Themen 9
P hashtable Java Basics - Anfänger-Themen 8
V Hashtable ausgeben Java Basics - Anfänger-Themen 4
V Suchen und ausgeben - Hashtable Java Basics - Anfänger-Themen 3
J HashTable Java Basics - Anfänger-Themen 4
G Inhalt einer Hashtable ausgeben Java Basics - Anfänger-Themen 2
A Hashtable als Rückgabewert Java Basics - Anfänger-Themen 3
N maximale Anzahl Schlüssel in einem Hashtable Java Basics - Anfänger-Themen 7
T Hashtable und Vektor Java Basics - Anfänger-Themen 3
R Hashtable wird falsch ausgegeben Java Basics - Anfänger-Themen 5
B Hashtable.containsKey Problem Java Basics - Anfänger-Themen 13
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
B Quiz mit RMI Probleme mit RMI start Java Basics - Anfänger-Themen 4
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
R JMenu/JMenuItem Probleme Java Basics - Anfänger-Themen 2
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
J Probleme mit dem Debugger Java Basics - Anfänger-Themen 4
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
J Probleme mit Kompilierung Java Basics - Anfänger-Themen 11
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
C Probleme mit paintComponent Java Basics - Anfänger-Themen 13
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
R Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person" Java Basics - Anfänger-Themen 5
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben