Findet Int, obwohl nicht definiert! Finde den Fehler net!
lima-city → Forum → Programmiersprachen → Java
argument
ausgabe
behandlung
beitrag
bit
buchstabe
catch
daheim
dezimalzahl
eingabe
fehler
gel
gen
hilfe
import
innere klasse
klasse
main
methode
string
-
import java.io.*;
public class zaun_ent {
public static void main (String[] arguments) {
System.out.println("Text eingeben");
String code = Eingabe1.liesText();
String zeile3 = " ";
//int zeilen_lenge = code.length()/2;
char zeile1;
char zeile2;
char c = code.charAt(0);
char b = code.charAt(0);
for(int i=0; i<=code.length()/2; i++){
zeile1 = code.charAt(i);
zeile2 = code.charAt(i*2+code.length());
-->zeile3 = zeile1 + zeile2;
}
System.out.println(zeile3);
}
}
In der Oben markierten Zeile, findet er einen int und ben?tigt einen String!
Aber irgendwie hab ich nirgendwo zeile 3, 2 oder 1 als int definiert, deswegen wunder ich mich etwas..
found : int
required: java.lang.String
Kann mir irgendjemand sagen, woran das liegen kann?
Ach ja, das Programm soll einen String durch 2 Teilen und dann eben von der 1. h?lfte den 1. buchstaben nehmen, dann von der 2. h?lfte den ersten buchstaben, dann von der 1. h?lfte den 2., dann von der 2. den 2. und so weiter..
W?re ?ber hilfe sehr dankbar
ninja02 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Kannst du mal den Code von der Eingabe1 Klasse angeben?
Das w?rde die ganze Sache vereinfachen.
Und welche JAVA Version nutzt du? -
klar, np...
/** Vereinfachung der Eingabe durch Bereitstellung der Methoden
liesInt (Einlesen einer ganzen Zahl)
liesFloat (Einlesen einer Dezimalzahl 32 bit)
liesDouble (Einlesen einer Dezimalzahl 64 bit)
liesChar (Einlesen eines Zeichens) */
import java.io.*;
public class Eingabe1 {
/* ************* Methode zum Einlesen einer Zeichenkette ****** */
public static String liesText() {
String eingabe = "";
try {
BufferedReader Tastatur =
new BufferedReader(new InputStreamReader(System.in));
eingabe = Tastatur.readLine();
}
catch (IOException ioe) {
System.out.println(ioe.toString());
ioe.printStackTrace();
}
return eingabe;
}
public static int liesInt() {
int eingabeint = Integer.parseInt(liesText());
return eingabeint;
}
public static float liesFloat() {
float eingabe = new Float(liesText()).floatValue();
return eingabe;
}
}
Und ich nutze
Java(TM) Plug-in: Version 1.4.1_03
wenn es das ist, was du meinst...
sonst musst du mir sagen, wo das genau steht
ninja02
-
so, als ich daheim vor Eclipse sa? und er mir die Fehlermeldung anzeigte...war es mir klar. Der kompiler nimmt an das du dort zwei Ganzzahlen addieren willst. Damit es funktioniert musst du lediglich ein "" mit einf?gen.
Das w?rde dann so aussehen (Ich hab deine Eingabe1 Klasse mal als innere Klasse geschrieben ;D)
// EDIT: ich hab nun das code Tag genutzt zum anzeigen, ist zwar .... aber ok... die <? und ?> geh?ren nat?rlich nicht mit zum JAVA code!
// EDIT 2: Die Version von mir findest auch als JAVA DAtei unter: http://evil-devil.lima-city.de/lima/StringSplitAdd.java
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class zaun { public static void main(String[] args) { System.out.println("Text eingeben"); String code = Eingabe1.liesText(); String zeile3 = " "; //int zeilen_lenge = code.length()/2; char zeile1; char zeile2; char c = code.charAt(0); char b = code.charAt(0); for (int i=0; i<code.length()/2; i++) { zeile1 = code.charAt(i); zeile2 = code.charAt(i*2+code.length()); zeile3 = zeile1 + "" + zeile2; } System.out.println(zeile3); } } class Eingabe1 { public static String liesText() { String eingabe = ""; try { BufferedReader Tastatur = new BufferedReader(new InputStreamReader(System.in)); eingabe = Tastatur.readLine(); } catch (IOException ioe) { ioe.printStackTrace(); } return eingabe; } public static int liesInt() { int eingabeint = Integer.parseInt(liesText()); return eingabeint; } public static float liesFloat() { float eingabe = new Float(liesText()).floatValue(); return eingabe; } }
So, das ganze w?rde dann zumindest kompilieren, allerdings wirst du bei der Ausf?hrung dann eine ArrayOutOfBoundsException erhalten. Daraufhin hab ich das mal soweit gel?st...
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StringSplitAdd { public StringSplitAdd() { System.out.println("Geben Sie einen Text ein:"); String eingabe = readString(); // beinhaltet den eingelesenen Text String ausgabe = ""; // wird den zusammengesetzten Text halten int length = eingabe.length(); // hilfsvariable um length() aufruf zu vermeiden int leftHalf = length/2; // l?nge der String H?lften bzw. der linken String H?lfte int rightHalf = leftHalf; // l?nge der rechten String H?lfte // testen ob der geteilte String zu beiden Teilen gleich lang ist if (length - leftHalf != length/2) { rightHalf = length - leftHalf; } // ausgabe tun :) // TODO: leerzeichen behandlung einf?gen for (int i=0; i<leftHalf; i++) { char c1 = eingabe.charAt(i); char c2 = eingabe.charAt(i+leftHalf); ausgabe += "" + c1 + c2; // falls die linke h?lfte nicht so lang ist wie die rechte und // die laufvariable + linke h?lfte gleich der rechten h?lfte ist, // dann auch den letzten verbliebenen charakter ausgeben if (leftHalf != rightHalf && i+leftHalf == rightHalf) { char c3 = eingabe.charAt(rightHalf+1); ausgabe += "" + c3; } } System.out.println("Ausgabe:\n"+ausgabe); } private String readString() { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); return br.readLine(); } catch (IOException ioe) { ioe.printStackTrace(); } return ""; } private int stringToInt(String text) { int value = 0; try { value = Integer.parseInt(text); } catch (NumberFormatException nfe) { nfe.printStackTrace(); } return value; } private float stringToFloat(String text) { float value = 0f; try { value = Float.parseFloat(text); } catch (NumberFormatException nfe) { nfe.printStackTrace(); } return value; } public static void main(String[] args) { StringSplitAdd ssa = new StringSplitAdd(); } }
Die Ausgabe von Texten die keine Leerzeichen enthalten klappt wunderbar, allerdings m?sstest du es noch soweit erweitern das auch Leerzeichen richtig verarbeitet werden. Momemtan kommen da einfach doppelte Zeichen bei raus...
greetz Benny
Beitrag ge?ndert am 1.09.2005 18:44 von evil-devil -
super! Danke, problem bei sowohl deiner als auch meiner anderen Variantie habs nochmal anders gel?st ist jedoch, dass sie nur bei Strings mit graden L?ngen funktioniert! Bei auto klappt es bei hallo klappt es nicht! Wie k?nnte man das noch l?sen..
schonmal danke!
ninja02 kater habend
Ach so, meine "eigene" L?sung:
import java.io.*;
public class zaun_ent_2 {
public static void main (String[] arguments) {
System.out.println("Text eingeben");
String code = Eingabe1.liesText();
String zeile3 = "";
int zeilen_lenge = code.length()/2;
//System.out.println(zeile1_lenge);
String zeile1 = "";
String zeile2 = "";
int i=0;
int a=zeilen_lenge;
for(i=0, a=zeilen_lenge; i<zeilen_lenge && a<=code.length(); i++, a++){
zeile1 = String.valueOf(code.charAt(i));
zeile2 = String.valueOf(code.charAt(a));
zeile3 = zeile3 + zeile1 + zeile2;
}
System.out.println(zeile3);
}
}
Beitrag ge?ndert am 3.09.2005 10:06 von ninja02 -
F?r die Strings mit ungerader l?nge hab ich doch in meinem Code die IF Abfragen drin. SChau es dir einfach nochmal an, dann m?sstest es auch bei dir ?bernehmen k?nnen.
-
also ich hab den String "Hallo" mit meinen Prog verschl?sselt und dann mit dem von dir versucht das wieder r?ckg?ngig zu machen, das klappte net aus hloal wurde leider net hallo, sondern holal.
Das ist bei mir auch der fall!
[PHP]
import java.io.*;
public class zaun {
public static void main (String[] arguments) {
System.out.println("Bitte gib deinen Text ein!");
String code = Eingabe1.liesText();
int zeilen_lenge = code.length()/2;
System.out.println("M?chtest du diesen Text verschl?sseln (v) oder entschl?sseln (e)?");
String wahl = Eingabe1.liesText();
if(wahl.equals("v")){
String anfang1 = "";
for (int i = 0; i<=code.length()-1; i=i+2){
char c = code.charAt(i);
anfang1 = anfang1 + c;
}
String anfang2 = "";
for(int a=1; a<=code.length()-1; a=a+2){
char d = code.charAt(a);
anfang2 = anfang2 + d;
}
System.out.println(anfang1 + "\n" + anfang2);
}
else if (wahl.equals("e")){
String zeile3 = "";
String zeile1 = "";
String zeile2 = "";
int i=0;
int a=zeilen_lenge;
for(i=0, a=zeilen_lenge; i<zeilen_lenge && a<=code.length(); i++, a++){
zeile1 = String.valueOf(code.charAt(i));
zeile2 = String.valueOf(code.charAt(a));
zeile3 = zeile3 + zeile1 + zeile2;
}
System.out.println(zeile3);
}
else{
System.out.println("Nicht v oder e gedr?ckt");
}
}
}
[/PHP]
danke f?r die hilfe schonmal
ninja02
Beitrag ge?ndert am 6.09.2005 15:47 von ninja02 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage