Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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!

Geschrieben
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

Geschrieben
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

Geschrieben

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?

Geschrieben
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

Geschrieben
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.

Geschrieben

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

Geschrieben
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

Geschrieben
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

Geschrieben
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. :D

Und fürs entschlüsseln musst du dann ebenfalls eine Dimension mitteilen.

Gruß Jaraz

Geschrieben
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. :D

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

Geschrieben

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

Geschrieben
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

Geschrieben
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

Geschrieben
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

Geschrieben
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. :D

Gruß Jaraz

Geschrieben
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. :D

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

Geschrieben

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. :rolleyes:

Gruß Jaraz

Geschrieben
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. :rolleyes:

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

Geschrieben

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!

Geschrieben

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

Geschrieben

hast recht!

aber es gibt 25 Zeichen aus!

5*5= 25!!! :D

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!

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...