kostenloser Webspace werbefrei: lima-city


Findet Int, obwohl nicht definiert! Finde den Fehler net!

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    ninja02

    ninja02 hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e********l

    Kannst du mal den Code von der Eingabe1 Klasse angeben?
    Das w?rde die ganze Sache vereinfachen.
    Und welche JAVA Version nutzt du?
  4. Autor dieses Themas

    ninja02

    ninja02 hat kostenlosen Webspace.

    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
  5. e********l

    hmm, irgendwie finde ich da auch keinen Fehler.
    Ich werd mir das daheim mal genauer anschauen und dann heute abend nochmal was zu schreiben. Vllt. hat bis dahin ja auch schon jemand den Fehler gefunden ;)
  6. e********l

    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
  7. Autor dieses Themas

    ninja02

    ninja02 hat kostenlosen Webspace.

    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 :mad:

    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
  8. e********l

    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.
  9. Autor dieses Themas

    ninja02

    ninja02 hat kostenlosen Webspace.

    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
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!