DFBL-Benjamin Geschrieben 11. November 2002 Geschrieben 11. November 2002 ich will die sogenannte Hebräische Methode mit Java Programmieren. aber jetzt bekomme ich immer folgende Fehlermeldung: HebraeischeMethode.java [38:1] incompatible types // die falsche Zeile ist schwarz Hinterlegt! found : java.lang.String required: java.lang.String[] text = IOTools.readLine("Wort eingeben: "); ^ habe das folgende Programm geschrieben: import Prog1Tools.IOTools; /* * HebraeischeMethode.java * * Created on 11. November 2002, 18:36 */ /** * * @author Benjamin Gaus_2 */ public class HebraeischeMethode { /** Creates a new instance of HebraeischeMethode */ public HebraeischeMethode() { } /** * @param args the command line arguments */ public static void main(String[] args) { // Deklarationen int nummer=0; int i=10; int zahl; // Feld deklaration String[] text = new String[100]; // Ausgabe der Überschrift System.out.println("Hebräische Methode!"); // Eingabe des Textes text = IOTools.readLine("Wort eingeben: "); // Überprüfung wie groß das 2 dimensionale Feld sein soll do { zahl = text.length % i; i--; } while(zahl == 0); // Deklaration des 2 dimensionalen Feldes String[][] einzelText = new String[zahl][zahl]; // Jeder Buchstabe wird zu seinem Platz im 2 dimensionalen Feld zu gewiesen for(int k=0; k < zahl; k++) { for(int l=0; l < zahl; l++) { einzelText[k][l] = text[nummer]; nummer++; } } // Ausgabe der Buchstaben im Feld zahl * zahl! for(int k=0; k < zahl; k++) { for(int l=0; l < zahl; l++) { System.out.print(einzelText[k][l]+"\t"); } System.out.println(); } } } ich habe jetzt schon einiges ausprobiert! habe aber bis jetzt noch keine Lösung für das kleine Problem gefunden! Zitieren
fmarx2000 Geschrieben 11. November 2002 Geschrieben 11. November 2002 Originally posted by DFBL-Benjamin ich will die sogenannte Hebräische Methode mit Java Programmieren. aber jetzt bekomme ich immer folgende Fehlermeldung: habe das folgende Programm geschrieben: ich habe jetzt schon einiges ausprobiert! habe aber bis jetzt noch keine Lösung für das kleine Problem gefunden! Mal wieder meine Worte: Der Compiler sagt dir was falsch ist. Er will keinen String sondern ein Array von Strings. Frank Zitieren
DFBL-Benjamin Geschrieben 12. November 2002 Autor Geschrieben 12. November 2002 und wie muss ich ein Array von String machen? Schreibweise? stehe grad ein bisschen auf´m Schlauch! Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by DFBL-Benjamin und wie muss ich ein Array von String machen? Schreibweise? stehe grad ein bisschen auf´m Schlauch! String strArray[] = { "a", "b", "c" }; oder String strArray[] = new String[20]; usw. Lernt ihr eigentlich vorher die Programmiersprache bevor ihr damit arbeitet oder wird das mehr so nach trial and error gemacht ? Frank Zitieren
DFBL-Benjamin Geschrieben 12. November 2002 Autor Geschrieben 12. November 2002 wir haben kein guten Lehrer in dem Fach, da muss man alles 5mal nachschauen! bis man es versteht! Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Hi, was ist die "Hebräische Methode" oder was soll sie machen? Den Text einfach nur drehen? Gruß Jaraz Zitieren
DFBL-Benjamin Geschrieben 12. November 2002 Autor Geschrieben 12. November 2002 Erklärung so wie ich die haben: Um eine Nachricht zu verschlüsseln, kann man sie in ein schachbrettartig unterteiles Rechteck horizontal einschreiben und vertikal wieder auslesen. Diese sogenannte "hebräische Methode" soll programmiert werden. Beispiel zum Verständnis: Text wäre: hallobenj Rechteck: h a l l o b e n j Auslesen sieht dann so aus: hleaonlbj haste das verstanden? Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by DFBL-Benjamin wir haben kein guten Lehrer in dem Fach, da muss man alles 5mal nachschauen! bis man es versteht! Ja aber wie man in einer bestimmten Programmiersprache, die er auch noch unterrichtet, eine so elementare Sache erstellt wie ein Array das wird er wohl noch hinbekommen. Also ich kann da nur noch den Kopf schütteln. Frank Zitieren
Der Kleine Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by fmarx2000 Also ich kann da nur noch den Kopf schütteln. Dann tu es doch bitte! Selber schon mal vor einer lernwütigen Meute von 20 Leuten gestanden und etwas erklärt, was dieser Meute total neu ist? Altkluge Sprüche lösen das Problem nämlich nicht. Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Hi, nun habe ich verstanden was du willst. Du musst also erst einmal deinen String einlesen: String s = IOTools.readline(); oder so ähnlich, da ich deine IOTools nicht kenne. Dann würde ich die Stringlänge nehmen und die Wurzel davon auf den nächsten int aufrunden. Dann hast du die Dimension deines mehrdimensionalen Arrays. Ein String Array ist da allerdings nicht nötig, da ein char Array reicht: char[][] c = new char[dimension][dimension]; c[x][y] = s.charAt(i); i kannst du in einer for Schleife durchlaufen. x und y musst du berechnen. Ebenso bei der Ausgabe: StringBuffer ausgabe = new StringBuffer(); ausgabe.append(c[x][y]); System.out.println(ausgabe); auch hier musst du x und y wieder berechnen. (kleiner Tipp, da hilft der modulo Operator) Das ganze läßt sich also mit 2 for Schleifen erledigen. Gruß Jaraz Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by Der Kleine Dann tu es doch bitte! Selber schon mal vor einer lernwütigen Meute von 20 Leuten gestanden und etwas erklärt, was dieser Meute total neu ist? Altkluge Sprüche lösen das Problem nämlich nicht. Ja ich habe schon des öfteren vor einer "Meute lernwütiger" gestanden. Während des Studiums habe ich verschiedene Tutorien in Technischer Informatik und verschiedenen anderen Themen gemacht. Daher weiss ich wie das ist, aber das Zauberwort heisst Vorbereitung , wenn man nämlich nicht weiss von was man blubbert wird man nicht ernst genommen. Frank Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by Jaraz Hi, nun habe ich verstanden was du willst. Du musst also erst einmal deinen String einlesen: String s = IOTools.readline(); oder so ähnlich, da ich deine IOTools nicht kenne. Dann würde ich die Stringlänge nehmen und die Wurzel davon auf den nächsten int aufrunden. Dann hast du die Dimension deines mehrdimensionalen Arrays. Gruß Jaraz Und was machst du wenn es ein Rechtweck sein soll ( a <> b ) , dann sieht es mit der Wurzel dann ja nicht so toll aus ... oder ? Laut Beschreibung kann es sich um ein schachbrettartig unterteiltes Rechteck handeln. Frank Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by fmarx2000 Und was machst du wenn es ein Rechtweck sein soll ( a <> b ) , dann sieht es mit der Wurzel dann ja nicht so toll aus ... oder ? Laut Beschreibung kann es sich um ein schachbrettartig unterteiltes Rechteck handeln. Frank Dann musst man zumindest eine Dimension vorgeben. Man kann natürlich auch die Rechtecke berechnen und das günstigste nehmen, falls die Stringlänge eine Primzahl ist, wird dann allerdings nichts verschlüsselt. Und fürs entschlüsseln musst du dann ebenfalls eine Dimension mitteilen. Gruß Jaraz Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by Jaraz Dann musst man zumindest eine Dimension vorgeben. Man kann natürlich auch die Rechtecke berechnen und das günstigste nehmen, falls die Stringlänge eine Primzahl ist, wird dann allerdings nichts verschlüsselt. Und fürs entschlüsseln musst du dann ebenfalls eine Dimension mitteilen. Gruß Jaraz Hmmm wenn ich das Array habe kann ich doch die Dimensionen ermitteln, ich muss sie doch nicht mitteilen. Da das Array immmer zweidimensional ist. Es ist ja nicht zwingend notwenig, daß das Array in der Summe der Felder gleich der Anzahl der Felder des zu verschlüsselnden Strings ist ... oder ? Frank Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Und was nimmst du dann bei z.B. 12 Stellen, wenn du keinen x oder y Wert vorgibst? [1][12] [2][6] [3][4] [4][3] [6][2] [12][1] Bei Wurzel 12 aufgerundet hättest du als Dimension halt [4][4]. Gruß Jaraz Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by Jaraz Und was nimmst du dann bei z.B. 12 Stellen, wenn du keinen x oder y Wert vorgibst? [1][12] [2][6] [3][4] [4][3] [6][2] [12][1] Bei Wurzel 12 aufgerundet hättest du als Dimension halt [4][4]. Gruß Jaraz Ich sagte ja auch wenn ich das Array mal habe und ich möchte dann dekodieren dann brauche ich keine Angaben mehr über eine Dimension, zumindest in Java nicht. Frank Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by fmarx2000 Ich sagte ja auch wenn ich das Array mal habe und ich möchte dann dekodieren dann brauche ich keine Angaben mehr über eine Dimension, zumindest in Java nicht. Frank Du überträgst ja aber nach dem verschlüsseln den String und nicht das Array. Wenn du das Array senden würdest, wäre die ganze Verschlüsselung sinnlos. Und aus dem String kannst du nicht ohne weiteres das Array neu aufbauen, wenn du nicht wenigstens eine Dimension weißt. Gruß Jaraz Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by Jaraz Du überträgst ja aber nach dem verschlüsseln den String und nicht das Array. Wenn du das Array senden würdest, wäre die ganze Verschlüsselung sinnlos. Und aus dem String kannst du nicht ohne weiteres das Array neu aufbauen, wenn du nicht wenigstens eine Dimension weißt. Gruß Jaraz Von verschicken stand da nie was , jedenfalls habe ich das nicht gelesen. Und warum dann nicht das ganze Array verschicken einfach mit serialize. Frank Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by fmarx2000 Von verschicken stand da nie was , jedenfalls habe ich das nicht gelesen. Und warum dann nicht das ganze Array verschicken einfach mit serialize. Frank Tja, warum ist die Banane krumm. Es geht um die Hebräische Methode. Diese ist anscheinend vor der Exitenz der Computer zum verschlüsseln von Daten benutzt worden. In der Aufgabe geht es nun anscheinend darum die Methode nachzubilden und ich glaube kaum, dass die alten Papyrusrollen das Interface Serializable implementierten. Gruß Jaraz Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by Jaraz Tja, warum ist die Banane krumm. Es geht um die Hebräische Methode. Diese ist anscheinend vor der Exitenz der Computer zum verschlüsseln von Daten benutzt worden. In der Aufgabe geht es nun anscheinend darum die Methode nachzubilden und ich glaube kaum, dass die alten Papyrusrollen das Interface Serializable implementierten. Gruß Jaraz Dann sollte man es auch nicht auf dem Computer benutzen sondern auf Papyrusrollen. Aber dann wäre es auch nötig gewesen eine Dimension getrennt zu übertragen, sonst wäre es für den Schurken ja zu einfach gewesen. Frank Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Was ich viel schlimmer finde, ist das solche Lehrer das Lernen einer OO Sprache so angehen, wie sie auch bei C oder VB vorgehen würden. Anstatt erst einmal auf die objektorientierten Aspekte einzugehen, werden erst mal sämtliche Algorithmen die Sie kennen, in der main Methode abgehandelt. Und dann kommt irgendwann der Satz, so und jetzt kommen wir zu den Objekten. Ich kenne manche Leute, die meinen static wäre Pflicht für Klassenvariablen, nur weil sie es noch nie anders gelernt haben, bzw weil es anders nicht funktioniert. Aber ich schweife ab, wie wäre es nun wenn sich der Ursprungsposter mal wieder zu Wort meldet. Gruß Jaraz Zitieren
fmarx2000 Geschrieben 12. November 2002 Geschrieben 12. November 2002 Originally posted by Jaraz Was ich viel schlimmer finde, ist das solche Lehrer das Lernen einer OO Sprache so angehen, wie sie auch bei C oder VB vorgehen würden. Anstatt erst einmal auf die objektorientierten Aspekte einzugehen, werden erst mal sämtliche Algorithmen die Sie kennen, in der main Methode abgehandelt. Und dann kommt irgendwann der Satz, so und jetzt kommen wir zu den Objekten. Ich kenne manche Leute, die meinen static wäre Pflicht für Klassenvariablen, nur weil sie es noch nie anders gelernt haben, bzw weil es anders nicht funktioniert. Aber ich schweife ab, wie wäre es nun wenn sich der Ursprungsposter mal wieder zu Wort meldet. Gruß Jaraz Hmm ich denke es ist teilweise so, dass JAVA als erste Programmiersprach gelehrt wird anstatt z.B. Pascal was mehr Sinn machen würde da man das ganze OO - Zeug erstmal nicht hat und dann auch nicht versaut wird. Es gibt fast nicht schlimmeres als jemand der eine OO-Sprache wie JAVA oder C++ einsetzt als würde er prozedural Programmieren. Das wird dann leider meistens auch so weitergeführt und die Vorteile von OO werden nie so richtig verstanden oder genutzt. Verkehrte Welt. Frank Zitieren
DFBL-Benjamin Geschrieben 12. November 2002 Autor Geschrieben 12. November 2002 ich habe die Aufgabe jetzt gelöst. ich habe euch jetzt noch eine Kleinigkeit der Aufgabenstellung vergessen. aber diese finde ich wirklich am dümmsten! nebenbemerkung: Es kann davon ausgegangen werden, dass die Anzahl der Zeichen in einem Text eine Quadratzahl ist. Der Text soll bis maximal 100 Zeichen enthalten dürfen. Ich finde, den Zusatz voller Quatsch. Ich würde das jetzt nur auf 25 begrenzen, dann würde das auch immer schön mit dem gleichen Wort laufen, aber so wie es in der Aufgabe drin steht, muss es immer z. B. die Quadratzahl sein 1, 2, 3, 4, 5, 6, 7, 8, 9 oder 10! Wer schafft 100 Zeichen einzugeben ohne ein Zeichen zuviel oder zu wenig! was haltet ihr von der Zusatzaufgabe? ohne die Nebenbemerkung sieht das Programm dann so aus: import Prog1Tools.IOTools; /* * HebraeischeMethode.java * * Created on 11. November 2002, 18:36 */ /** * * @author Benjamin Gaus_2 */ public class HebraeischeMethode { /** Creates a new instance of HebraeischeMethode */ public HebraeischeMethode() { } /** * @param args the command line arguments */ public static void main(String[] args) { // Deklarationen int nummer=0; int i=10; int zahl; // Ausgabe der Überschrift System.out.println("Hebräische Methode!"); // Eingabe des Textes String text = IOTools.readLine("Wort eingeben: "); // Erstellung eines Feldes mit der Laenge des eingegebenen Textes char [] text_1=new char[text.length()]; // Deklaration des 2 dimensionalen Feldes char[][] einzelText = new char[5][5]; // Jeder Buchstabe wird zu seinem Platz im 2 dimensionalen Feld zu gewiesen for(int k=0; k < 5; k++) { for(int l=0; l < 5; l++) { einzelText[k][l] = text.charAt(nummer); nummer++; } } // Ausgabe der Buchstaben im Feld zahl * zahl! System.out.println("Ausgabe des Rechtecks!"); for(int k=0; k < 5; k++) { for(int l=0; l < 5; l++) { System.out.print(einzelText[k][l]+"\t"); } System.out.println(); } // Erstellung der Verschlüsseltes Schrift System.out.print("Verschluesselter Text: "); for(int k=0; k < 5; k++) { for(int l=0; l < 5; l++) { System.out.print(einzelText[l][k]); } } System.out.println(); }// Ende Main-Programm }// Ende Klasse Hebraeische Methode Das Programm habe ich jetzt auf 25 Zeichen begrenzt! Das sieht man daran, weil es nur ein Schachbrettartiges Feld von 5x5 gibt! Zitieren
Jaraz Geschrieben 12. November 2002 Geschrieben 12. November 2002 Das du die Matrix einfach auf 5x5 festsetzt, ist glaube ich nicht Sinn der Sache und liefert dir bei nur 16 Zeichen auch ein falsches Ergebniss. Laut Aufgabenstellung soll ja alles von 1 bis 10 zum Quadrat gehen. Gruß Jaraz Zitieren
DFBL-Benjamin Geschrieben 12. November 2002 Autor Geschrieben 12. November 2002 hast recht! aber es gibt 25 Zeichen aus! 5*5= 25!!! bei 16 Zeichen oder weniger gibt er Fehler zurück! ich finde C++ war einfacher als das Java, da ging das Ruckzuck mit dem Programm, aber bei Java muss man noch alles 25 mal anders schreiben, bis es mal geht! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.