Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Enthält ungültige Zeichen
“Datei ‘BackpackDpPrintSolution.java’ enthält ungültige Zeichen”
Ich bekomme beim Hochladen exakt diese Fehlermeldung.
Mein erster Gedanke war, dass ich ö,ä,ü,ß, verwendet habe in meinen Kommentaren, extra alles durchgegangen und habe keine Sonderzeichen gefunden.
Mein zweiter Gedanke: Ich habe mir bei dieser Aufgabe zum ersten Mal ne eigene Methode gebastelt, (im Übungsblatt 0 steht ja, dass man beliebig viele Methoden und Felder hinzufügen darf, außer es ist explizit verboten). Meine Hilfsmethode ist einfach static gewesen, dann hab ich es mit private und protected versucht und immer wieder die gleiche Fehlermeldung, bekomme nicht mal eine Sanduhr, sondern gleich beim Hochladen erscheint oben diese rot markierte Fehlermeldung… kann mir da wer weiterhelfen? Hoffe es liegt nicht an der Methode, sonst bin ich nämlich wirklich aufgeschmissen xD.
Gruß Andre
“Enthält ungültige Zeichen” sollte eigentlich genau das bedeuten.
Du kannst mal wie hier mit grep deine Datei nach Nicht-ASCII-Zeichen durchsuchen.
Compiliert es denn mit javac -encoding ASCII
Super, danke für eure Hilfe, wie immer top
Da ich an einem win Laptop hocke und es bei mir einwandfrei kompiliert hat, hab ich jetzt ganz stumpfsinnig alle Kommentare gelöscht.
Folge: grüner Haken
hatte mir ein “speicher” Array erzeugt und einen Teil der Initialisierung erstmal weggelassen, sah dann so aus:
//safe[1] =;
kann mir gut vorstellen, dass es wohl daran gelegen hat, oder aber ich hab was anderes übersehen
jedenfalls ist meine Hilfsmethode jetzt protected, weil ich alles mal durchprobiert habe auf meiner Fehlersuche, passt das? Oder soll sie private sein, oder den Sichbarkeitsmodifikator ganz weglassen? Wär perfekt, wenn ihr mir darauf auch noch eine Antwort geben könntet, dann kann ich ohne Angst zu haben den Sonntag ausklingen lassen
Da du nicht willst, dass irgendein Hacker deine Daten auslesen oder verändern kann, ist es immer empfehlenswert, so restriktiv wie möglich zu programmieren. Hilfsmethoden werden in der Regel nur in der eigenen Klasse verwendet, insofern sind sie meistens privat.
Es geht dabei weniger um Hacker. In erster Linie stellst du mit deinen Methoden ja nur die Funktionalität zur Verfügung. Die Daten kommen vom Nutzer selbst.
Das primäre Ziel ist es vor allem nur die Methoden öffentlich zu machen, die vom Nutzer benutzt werden sollen. In der Regel nutzt jemand deine Klasse, um beispielsweise das Rucksackproblem lösen zu lassen. D.h. du lässt den Nutzer einfach nur [m]packBackpack()[/m] sehen (hat nichts mit der aktuellen Aufgabe zu tun) und die ganzen anderen Methoden sind private. So kommt der Benutzer nicht in Verwirrung, welche der Methoden nun geeignet ist, was sie tun (weil sie nicht sinnvoll dokumentiert sind). Effektiv wird er die Lösung aber nur bekommen, wenn er die eine richtige Methode ausführt. Er muss nicht [m]packRecAux1[/m] oder [m]packReckAux2[/m] kennen und sollte das auch gar nicht. Wenn er dann noch anfängt irgendwelche Variablen zu verändern (beispielsweise einen öffentlichen Merker, der sich den aktuell besten Rucksack merkt), dann kommen am Ende Ergebnisse raus, die einfach falsch sind. Daher sind einfach nur die Methoden public, die vom Nutzer ohne Probleme aufgerufen werden dürfen und diese sind dann auch entsprechend gut dokumentiert. Der Vorteil liegt dann auch darin, dass ich ohne Probleme einfach meine Klasse optimieren kann und beispielsweise auf dynamische Programmierung umstellen kann, wenn ich nur die eine öffentliche Methode nicht umbenenne. Der Nutzer wird beim Aktualisieren der Software im Code gar nicht merken, dass sich die Arbeitsweise geändert hat, aber der Code läuft eben deutlich schneller und unter der Haube wurden etliche private Methoden evtl. umbenannt.
Die Hacker, vor denen die Daten geschütz werden sollen, interessieren die Sichtbarkeitsbeschränkungen übrigens wenig. Zur Not liest man eben einfach den Speicher aus, in dem die „privaten“ Variablen stehen und forciert mit eingepflegtem Code Sprünge zu den „privaten“ Methoden, die keiner ausführen darf ;).
Ein [m]private String secret_password = „1234“;[/m] ist also trotzdem eine schlechte Idee.
Das ist mir absolut klar, aber die rechtliche Seite interessiert das schon. Öffentliche Passwörter kann man auch ohne jegliche komplexe Software auslesen. Private Variablen kann man allerdings nur auslesen, wenn man schon komplexere Verfahren anwendet. Nach §202 StGB ist das Auslesen von Variablen unter Zuhilfenahme von Software illegal, das Verwenden öffentlich gestellter Passwörter allerdings nicht.
Um Hintergründe geht es aber dem Fragesteller meines Erachtens nicht. Insofern enthalte ich mich im weiteren Verlauf vom Off-Topic.
Oder in Java noch einfacher via Reflection, denn da kommt man auch an alles ran
Das ist natuerlich absoluter Quatsch, denn im Gesetz sind mit Sicherheit keine Java-Sichtbarkeits-Modifier gemeint