Variablen Switch Bedingungen

mk4net

Aktives Mitglied
Hey ho,
Ich hab mal wieder eine Frage, und zwar versuche ich gerade einen extrem primitive BinärCodegenerator zu programmieren. Mein Problem hierbeis ist das ich mit einer for SChleife jedes Element in einer Char Array mit einemn Switch Statement überprüfen will.
Das eigentlich Problem besteht darin dass er irgendwie nur zwei Variablen vergleichen will aber nicht einen Wert mit einer Variable. Ich könnte jetzt natürlich 26 Chars machen für jeden Buchstaben, aber dass ist mir wirklich zu doof, da muss es doch einfach eine Andere Lösung geben oder?


mfg Nick


Code:

Main:
Java:
package firstTry;

import java.util.Scanner;

public class Main {
	
	public static String eingabe(){		
		Scanner stringEingabe= new Scanner(System.in);//fängt eingabe ab und speichert sie in nem String
		return stringEingabe.nextLine();			   //gibt den String zurück
	}
	
	public static void main(String[] args) {
		Umrechner rechner = new Umrechner();
		
		
		String eingabe =eingabe();
		System.out.println(rechner.stringToChar(eingabe.toLowerCase()));
	}

}


Umrechner:
Java:
package firstTry;

public class Umrechner {
	public char[] stringToChar(String stringEingabe){//empfängt stringEingabe
		
		char[] eingabeArray = stringEingabe.toCharArray();	//fügt den String in ein char Array ein wo jeder Buchstabe ien eigenes Kasterll kriegt	 	
		String[] ausgabeArray= new String[eingabeArray.length] ;
		
		for(int counter=0;counter == eingabeArray.length;counter++){
			switch(eingabeArray[counter]){
			case eingabeArray[counter].equals(a): ausgabeArray[counter]="1000001" ; break;
			case b: ausgabeArray[counter]="1000010" ; break;
			case c: ausgabeArray[counter]="1000011" ; break;
			case d: ausgabeArray[counter]="1000100" ; break;
			case e: ausgabeArray[counter]="1000101" ; break;
			case f: ausgabeArray[counter]="1000110" ; break;
			case g: ausgabeArray[counter]="1000111" ; break;
			case h: ausgabeArray[counter]="1001000" ; break;
			case i: ausgabeArray[counter]="1001001" ; break;
			case j: ausgabeArray[counter]="1001010" ; break;
			case k: ausgabeArray[counter]="1001011" ; break;
			case l: ausgabeArray[counter]="1001100" ; break;
			case m: ausgabeArray[counter]="1001101" ; break;
			case n: ausgabeArray[counter]="1001110" ; break;
			case o: ausgabeArray[counter]="1001111" ; break;
			case p: ausgabeArray[counter]="1010000" ; break;
			case q: ausgabeArray[counter]="1010001" ; break;
			case r: ausgabeArray[counter]="1010010" ; break;
			case s: ausgabeArray[counter]="1010011" ; break;
			case t: ausgabeArray[counter]="1010100" ; break;
			case u: ausgabeArray[counter]="1010101" ; break;
			case v: ausgabeArray[counter]="1010110" ; break;
			case w: ausgabeArray[counter]="1010111" ; break;
			case x: ausgabeArray[counter]="1011000" ; break;
			case y: ausgabeArray[counter]="1011001" ; break;
			case z: ausgabeArray[counter]="1011010" ; break;
			
			default: System.out.println("Die in Fire Newfag");break;
			
			}
			
			
			System.out.println(counter);								//zum Testen 
		}
		
		
		
		
		
		
		
		
		return eingabeArray;
	}


}
 
Du kannst einen char nach int casten und erhälst den entsprechenden ASCII-Wert. Vielleicht bringt dich das ja schon auf eine Idee..


Gruß Fant
 
Probier mal:
Java:
for(int counter=0;counter == eingabeArray.length;counter++){
	ausgabeArray[counter]=toBinaryString((int)eingabeArray[counter]);
}

Aber du hast andere Fehler drin:
Das Case würde so nicht funktionieren, was gibst du überhaupt aus, ...?
 
@Fant Danke, ich geh mal googeln ^^ :rtfm:
@AquaBall dass funktioniert nicht. Freund Googel weis leider auch keine Hilfe/bzw ich versteh die
Hilfe nicht. es wird zwar sehr oft toBinaryString erwähnt aber ich hab kein sinnvolles
CodeBeispiel gefunden in dem es funktioniert. Eclipse kann mit toBinaryString so gar
nichts anfangen. Hättest du noch ne Idee?

mfg Nick
 
Naja, soo dumm dürfte Google doch nicht sein.
Ist halt ne Integer.Methode.

Java:
		Integer.toBinaryString(aNumber);
 
Die Vergleichswerte in
Code:
switch
sind sehr beschränkt: Es müssen entweder primitive Literale ([c]1[/c], [c]0xCAFE[/c], [c]5L[/c], [c]true[/c], aber [c]float[/c] und [c]double[/c] sind aber nicht erlaubt), Enum-Werte (ab Java 5) oder String-Literale (ab Java 7) sein. Obwohl viele andere Sachen sinnvoll wären, ist Java da sehr restriktiv.
 
Ein switch sieht ein bisschen anders aus:
Java:
switch (Ausdruck) {
    case ausdruck: 
        // do some stuff
        break;
    ...
    default: 
        // do some other stuff
}

Bei dir also:

Java:
switch(eingabeArray[counter]){
    case 'A': 
        // do some stuff
        break;
    case 'B': 
        // do some other stuff
        break;
    ...
    default: 
        // do some default stuff
}

Beachte: Das, was hinter case steht, ist nicht etwa der Name einer Variablen oder der Name des Falles oder ..., sondern eine Konstante.
 
Zuletzt bearbeitet:
Danke für die Antwortenalso ich hab das jetzt malk so gemacht:
Java:
package firstTry;

public class Umrechner {
	public void stringToChar(String stringEingabe){//empfängt stringEingabe
		System.out.println("lold");
		char[] eingabeArray = stringEingabe.toCharArray();	//fügt den String in ein char Array ein wo jeder Buchstabe ien eigenes Kasterll kriegt	 	
		String[] binaerArray= new String[eingabeArray.length] ;
		
	    System.out.println("lold");
		
		for(int counter=0;counter == eingabeArray.length;counter++){
		    binaerArray[counter]=Integer.toBinaryString((int)eingabeArray[counter]);
		    System.out.println(binaerArray[counter]);
		}
		
		
	}


}

aber irgendwie macht er mir dass in der for-Schleife nciht, er gibt mir nichts aus.
Wisst ihr vl hilfe?

mfg Nick
 
Weil die Bedingung in der for-Schleife nicht hinhaut: du vergleichst dort, ob der
Code:
counter
exakt so groß ist, wie das Array lang (was natürlich nie der Fall ist). Prüf mal lieber auf:
Code:
counter < array.length
 
Das '==' in meinem CodeSnipsel hab ich nur aus deinem Beispiel übernommen.
Das solltest du selbst erkennen.
Hab ja dazugeschrieben, dass noch einige Fehler drin sind.

Ich glaube du musst noch einiges an Arbeit selbst reinstecken (Bücher, Google, Versuche, ...) bis du verstehst was du tippst.

Es macht keinen Sinn, jeden Versuch ins Forum zu stellen, ohne selbst zu durchdenken!
 
Danke euch zwei.
@AquaBall sehr nett. Ich habe durchaus nachgedacht aber das nicht als Fehler erkannt.
Hättest es auch ganz einfach dazu schreiben können aber danke. Ich lese gerade
ein Java Buch aber wollte mal wieder was eigenes machen. und ich bin ja hier im
Anfänger Forum.

mfg Nick
 
Richtig: AnfängerForum!

Und wir helfen ja gerne.
Aber wir können oft nicht alle Fehler aufzählen, und ein funktionierendes fertiges Programm vorzugeben ist nicht unsere Absicht.

Ich meinte auch nicht dass solche "=="-Fehler jeder hätte sehen müssen, (ich hab mich auch nicht darum gekümmert), viel Häufiger ist der "="-Fehler in Bedingungen.
Sondern ich wollte nur betonen, dass dir nach so einer Fehlersuche bei dieser Programmgröße ABSOLUT JEDES Symbol klar sein sollte warum du das SO und AN DIESER Stelle tippst, und was es macht.
 
Sondern ich wollte nur betonen, dass dir nach so einer Fehlersuche bei dieser Programmgröße ABSOLUT JEDES Symbol klar sein sollte warum du das SO und AN DIESER Stelle tippst, und was es macht.

Das kann man nicht genug betonen. Bei altem Code begegnen einem manchmal "Regentanz-Codeschnipsel", bei dem jemand immer wieder ein bestimmtes Muster wiederholt, das irgendwo mal funktioniert hat, der Betreffende aber nicht oder nur halb verstanden hat, und in anderen Situationen sinnlos ist. The Daily WTF: Curious Perversions in Information Technology ist voll davon.
 

Neue Themen


Zurück
Oben