PHP-Code zu Java-Code

Aracher17

Mitglied
Moin, Moin!

Ich habe hier im Forum schon sehr viel gutes gelesen und nun beschlossen mich auch zu regestrieren und euch gleich meine aller erste Frage zustellen. Ich hoffe die ist hier auch richtig?!

Ich habe einst etwas in PHP programmiert. Allerdings läuft der Script in PHP nicht so Leistungsfähig , wie ich es mir in Java vorstelle. Deswegen wollte ich es in Java umschreiben. Allerdings stellen sich mir hier auch schon die ersten Hindernisse.

Hier ist der PHP-Code:
PHP:
    function permute($keys,$limit = 3, $list = array( ))
    {
	$file = "lists/".$limit."-ist.txt";
	if(!file_exists($file))
	{
	//create file if it dosent exists
	$ourFileHandle = fopen($file, 'w') or die("can't open file");
	fclose($ourFileHandle);
	}

   if(count($list) === $limit) 
  { 
    //echo implode('', $list) . "<br>\n";         // Array in String wandeln trennzeichen ist Leerzeichen 
	array_push($this->permuteArray, implode($list));
	//file_put_contents($file,$this->permuteArray, FILE_APPEND);
	$handle = fopen($file, "a") or die("Cannot open file!");
	fwrite($handle, "\n".implode("", $list));
	fclose($handle);
  } 
  for ($i = count($keys) - 1; $i >= 0; --$i) 
  { 
    $pkeys = $keys;                              // Orginal Array String liste beibehalten nicht überschreiebn 
    $perm  = $list; 
    list($foo) = array_splice($pkeys, $i, 1);    // Wandeln zum String durch list Einzelen alle Zeichen rausholen Zeichenlänge auf 1 begrenzen 
    array_unshift($perm, $foo);                  // fügt die übergebenen Elemente am Anfang von array ein 
 //   permute($pkeys, $perm); 
    if(count($perm) <= $limit) 
    { 
      $this->permute($pkeys,$limit,$perm);              // Rekusiver aufruf 
    } 
  }

    } //function permute

Das habe ich in Java jetzt so umgeschrieben:
Java:
	private void permute(final List<String> keys,final int limit, final List<String> list) {
		//Runnable r = new Runnable() {

		//		@Override
		//		public void run() {
					txtLog.append("\n"+"Start permuting");
					System.out.println("Keys: " + keys + " || limit: " + limit);
					if(keys.size() == limit) {
						//write into file
						try {
						BufferedWriter output = new BufferedWriter(new FileWriter(tmpFile));
						String[] foo = (String[]) list.toArray();
						output.write("\n"+implode("",foo));
						output.close();
						txtLog.append("\n"+"Writting...");
						} catch (IOException e) {
							JOptionPane.showMessageDialog(null, "Fehler beim erstellen der temporären Datei!","Fehler",JOptionPane.CANCEL_OPTION);
							System.err.print("FEHLER! >> " + e.getMessage());
							e.printStackTrace();
						}
					}
						
						for(int i = keys.size() - 1; i >= 0; --i) {
							System.out.println("I'am inside a looop!");
							
							List<String> pkeys = keys;
							List<String> perm  = list;
							
							List<String> foos = pkeys.subList(0, i+1);
							System.out.println("foos: " + foos);
							perm.addAll(foos);
							
							if(perm.size() <= limit)
							{
								permute(pkeys,limit,perm); // Rekusiver aufruf
								System.out.println("I'am inside a rekusiv!");
							}
						}
					
	//			}
	//		};
	//		Thread t = new Thread(r);
	//		t.start();
	}
	
	public static String implode(String separator, String... data) {
	    StringBuilder sb = new StringBuilder();
	    for (int i = 0; i < data.length - 1; i++) {
	    //data.length - 1 => to not add separator at the end
	        if (!data[i].matches(" *")) {//empty string are ""; " "; "  "; and so on
	            sb.append(data[i]);
	            sb.append(separator);
	        }
	    }
	    sb.append(data[data.length - 1]);
	    return sb.toString();
	}

Aufrufen tue ich die Methode wie folgt:
Java:
					//start permuatation
					String[] zeichenkette = txtZeichen.getText().toString().split("");
					List<String> zeichenketteListe = Arrays.asList(zeichenkette);
					permute(zeichenketteListe, Integer.parseInt(txtLimit.getText().toString()),null);

Leider funktioniert es natürlich nicht so wie es soll. Ich bekomme hierbei folgende Fehlermeldung:#
Code:
Keys: [, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, !, $, %, &, /, (, ), =, ?, +, -, _, ., ,, :, ;, #] || limit: 2
I'am inside a looop!
foos: [, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, !, $, %, &, /, (, ), =, ?, +, -, _, ., ,, :, ;, #]
java.lang.NullPointerException
	at de.systemoverride.percalc.MainDialog.permute(MainDialog.java:202)
	at de.systemoverride.percalc.MainDialog.btnStartActionPerformed(MainDialog.java:158)
	at de.systemoverride.percalc.MainDialog.access$0(MainDialog.java:130)
	at de.systemoverride.percalc.MainDialog$2.actionPerformed(MainDialog.java:100)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Ich hoffe ihr könnt mir helfen?!

MfG
Aracher17
 
Zuletzt bearbeitet:

eMmiE

Bekanntes Mitglied
NullPointerException heißt generell, dass etwas nicht initialisiert wurde.

Auf welche Zeile genau bezieht sich die Exception (-> welche Zeile des geposteten Codes ist die Original 202-te?)
 

Aracher17

Mitglied
[JAVA=202]perm.addAll(foos);[/code]

Hier im Kontext:
Java:
List<String> pkeys = keys;
List<String> perm  = list;
List<String> foos = pkeys.subList(0, i+1);
System.out.println("foos: " + foos);
perm.addAll(foos);
 
Zuletzt bearbeitet:

rme

Top Contributor
Du übergibst beim 1. Aufruf list = null, kopierst diese null in der Schleife nach perm und rufst dann etwas auf perm auf - deshalb die Exception.
 

Aracher17

Mitglied
Habe leider gerade mein PC nicht zur Verfügung, sonst würde ich meine Frage gerne selber testen.
Würde es was ändern, wenn ich im Sage, dass list eine leere Liste sein soll?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
AGW in Java-Code plötzlich ein paar Wörter in Rot Allgemeine Java-Themen 2
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
L Eclipse Java Code ausführen Allgemeine Java-Themen 18
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
I Python Code in Java Code Allgemeine Java-Themen 9
M Java (GUI) Code verdoppeln oder anzeige mehrmals anzeigen? Allgemeine Java-Themen 8
F Verständlichkeitsproblem bei Java Code?! Allgemeine Java-Themen 2
P Java Android Code in IOS compilieren? Allgemeine Java-Themen 9
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
C ASCII-Code in Java Allgemeine Java-Themen 1
J Java-Code in DLL packen Allgemeine Java-Themen 5
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
D Java Compiler code referencen Allgemeine Java-Themen 0
B Fehler im Java-Code Allgemeine Java-Themen 4
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
J Erzeugung von Java-Code Allgemeine Java-Themen 2
N VB Code in Java verwenden Allgemeine Java-Themen 5
L php code in java ausführbar? Allgemeine Java-Themen 6
D Fehler im Java Code Allgemeine Java-Themen 22
Gossi Java Code in einer GUI eingeben und ausführen? Allgemeine Java-Themen 2
P JAVA Code in Dokumentation erklären Allgemeine Java-Themen 2
B Verwendung von Packages im Java Code Allgemeine Java-Themen 10
A Jars oder JNLPs aus java code in gleicher JVM starten Allgemeine Java-Themen 2
S String to Java-Code Allgemeine Java-Themen 3
S java source code Allgemeine Java-Themen 5
G Java Programm mit Freischalt code entwickeln Allgemeine Java-Themen 30
K Test-Code in Java-Klassen verstecken (wie mit Precompiler möglich) Allgemeine Java-Themen 10
martin82 Java-Code aus Text-Datei parsen Allgemeine Java-Themen 3
P [erledigt] Java-Code in Ausarbeitung dokumentieren Allgemeine Java-Themen 2
J Java Code schützen? Allgemeine Java-Themen 19
K UML Komposition in Java Code Allgemeine Java-Themen 4
hdi Source Code von Sun's Java Klassen Allgemeine Java-Themen 11
T .jar Datei aus Java Code starten Allgemeine Java-Themen 10
Chris81T JNI: Java Methoden von C++ Code aufrufen Allgemeine Java-Themen 8
J YAML + Java: Simpler Code funktioniert nur unter Windows Allgemeine Java-Themen 2
C Listen in Java. Anehängter Code nicht ganz klar Allgemeine Java-Themen 19
S java source code Allgemeine Java-Themen 7
I ASCII Code in Java Allgemeine Java-Themen 3
K Java-Code messen Allgemeine Java-Themen 15
R bestimmten HTML Code per JAva lesen lassen Allgemeine Java-Themen 7
S Java Code in Word Allgemeine Java-Themen 8
leifg komischer Java code Allgemeine Java-Themen 4
I Alter Java Code! Allgemeine Java-Themen 8
D Java Code to Flussdiagramm Allgemeine Java-Themen 8
G Java Code in Programm umwandeln? Allgemeine Java-Themen 12
M pdf maker via java code ansprechen Allgemeine Java-Themen 2
M Code von Java-Klassen in Eclipse Allgemeine Java-Themen 4
G c code übersetzen nach java Allgemeine Java-Themen 2
Reeny JNI - Java-Code mit DELPHI verbinden Allgemeine Java-Themen 2
G Mit Java 1.5 zu 1.4 kompatiblen Code erzeugen Allgemeine Java-Themen 5
C Java Native binding Code will nicht so ganz Allgemeine Java-Themen 2
G C++ Code nach Java übersetzen Allgemeine Java-Themen 14
C Java Code schützen - Key4J Allgemeine Java-Themen 10
S Java Assembly Code Allgemeine Java-Themen 13
Zrebna Tipps für Organisation von Code-Reviews nach einem Pull Request. Allgemeine Java-Themen 5
M Unsicher, ob das Code richtig ist Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
schemil053 Methoden Code-Verbesserung Allgemeine Java-Themen 2
D Webarchive (war): Code verschleiern Allgemeine Java-Themen 7
D Compiler-Fehler child process exited with code 1 Allgemeine Java-Themen 1
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
berserkerdq2 Versteht jemand, was diese beiden Zahlen bei dem IJVM Code zu bedeuten haben? Allgemeine Java-Themen 10
OnDemand Releaseversion Tag in Code Allgemeine Java-Themen 5
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
F Code auslagern Allgemeine Java-Themen 5
A code wird nicht ausgeführt Allgemeine Java-Themen 3
B Bitte um Code Erklärung Allgemeine Java-Themen 5
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
OnDemand Clean Code oder Allgemeine Java-Themen 5
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
H Precompilierten code ansehen Allgemeine Java-Themen 3
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
Drachenbauer Wie kann ich die menge an code reduzieren? Allgemeine Java-Themen 28
Thallius Warum ist dieser Code OS abhängig? Allgemeine Java-Themen 10
S Code Erklärung Allgemeine Java-Themen 21
B Pausem im Code Allgemeine Java-Themen 2
F Code in Klassen bringen Allgemeine Java-Themen 4
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
F Klassen Spaghetti Code Vermeidung Allgemeine Java-Themen 16
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
J Code Page characters darstellen Allgemeine Java-Themen 12
J wie sollte man sinnvoll seinen Code aufteilen Allgemeine Java-Themen 6
N Wie öffne ich einen runtergeladadenen Code in IntelliJ Allgemeine Java-Themen 3
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
O Standard library nativer C code Allgemeine Java-Themen 1
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen &#8203; Allgemeine Java-Themen 3

Ähnliche Java Themen


Oben