# Zahlen und buchstaben gemeinsam in ein array?



## KlemensyXYZ (8. Nov 2010)

Moin,

ich soll ein Array bauen, in dem Zahlen und Buchstaben vorhanden sind.
Zum Schluss soll ausgegeben werden: 1 5 7 S X 2

habe da schon was probiert:


```
import java.io.*;

class arrtest
{
	public static void main (String args []) throws IOException
	{
		int zahlenFeld[];
		int zahl;
		int anzahlElemente = 0;
		char bs;
		String inData;
		
		BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.println("Ausgegeben werden soll: 1 5 7 S X 2");
		
		anzahlElemente = 6;
		
		System.out.println();									//Ausgabe Feldgröße
		System.out.println("Feldgroesse: " + anzahlElemente);
		
		zahlenFeld = new int[anzahlElemente];
		
		for (int i = 0; i < anzahlElemente; i++)
		{
			if (i == 1 && i == 2 && i == 3 && i == 5)
			{
				System.out.println();
				System.out.println("Geben Sie die Zahl ein!");
				inData = stdin.readLine();
				zahl = Integer.parseInt(inData);
			
				zahlenFeld[i] = zahl;
			}
			
			if (i == 3 && i == 4)
			{
				System.out.println();
				System.out.println("Geben Sie die Buchstaben ein!");
				bs = System.in.read();
				
				(char)zahlenFeld[i] = bs;
			}
		}
		
		for (int i = 0; i < zahlenFeld.length; i++)
		{
			System.out.print(zahlenFeld[i] + " ");
		}
	}
}
```

nur das funktioniert noch nicht.
Habe heute erfahren, dass ich morgen einen Test mit dieser oder einer ähnlichen Aufgabe schreiben werde und weis nicht was daran falsch ist.

Kann mir wer helfen?

Habe bis jetzt noch nix mit char gemacht

Danke

KlemensyXYZ


----------



## nrg (8. Nov 2010)

if (i == 1 && i == 2 && i == 3 && i == 5) ?????

if (i == 3 && i == 4) ?????

wie kann ein primitiver Datentyp gleichzeitig mehrere Werte haben?


----------



## Marcinek (8. Nov 2010)

i kann nicht mehrere Zustände gleichzeig annahemen

(i == 1 && i == 2 && i == 3 && i == 5)



Diese Zeile ist noch nicht korrekt:


```
(char)zahlenFeld[i] = bs;
```



wenn dann musst du bs nach char casten. 
	
	
	
	





```
(char)bs
```
;

Ich würde für das einlesen einen Scanner verwenden.


----------



## KlemensyXYZ (8. Nov 2010)

Marcinek hat gesagt.:


> i kann nicht mehrere Zustände gleichzeig annahemen
> 
> (i == 1 && i == 2 && i == 3 && i == 5)
> 
> Ich würde für das einlesen einen Scanner verwenden.



also immer so:

if (i == 1)
bla

if (i ==2)
bla

usw?


ähm und den scanner _darf_ ich nicht benutzen :noe:


----------



## Andi_CH (8. Nov 2010)

Lies doch einfach char ein - kannst ja immer noch überprüfen ob der im Bereich '0'-'1' ist wenn es denn so sein muss


----------



## KlemensyXYZ (8. Nov 2010)

wie les ich denn einen char ein??

habe das noch nie gemacht

edit:
habe grade von nem klassenkameraden erfahren, dass wir das nicht einlesen müssen

hier ein zweiter versuch der if schleife:


```
for (int i = 0; i < anzahlElemente; i++)
		{
			if (i == 0)
			{
				zahlenFeld[i] = 1;
			}
			
			if (i == 1)
			{
				zahlenFeld[i] = 5;
			}
			
			if (i == 2)
			{
				zahlenFeld[i] = 7;
			}
			
			if (i == 3)
			{
				char x;
				x = s;
				
				zahlenFeld[i] = x;
			}
			
			if (i == 4)
			{
				char y;
				y = x;
				
				zahlenFeld[i] = y;
			}
			
			if (i == 5)
			
			{
				zahlenFeld[i] = 2;
			}	
			
		}
```

das mit dem char funzt aber immer noch nicht


----------



## Andi_CH (8. Nov 2010)

Also wenn ich genau hinschaue machst du es schon -> Zeile 30 in deinem Code

In dem String hast du ganz viele characters drin ;-)

dann wandelst du die in int ...... (was du nicht zwingend musst)

--

So, Andi is goin home - it's Fire evening (oder so ähnlich)


----------



## tuttle64 (8. Nov 2010)

KlemensyXYZ hat gesagt.:


> also immer so:
> 
> if (i == 1)
> bla
> ...




Wenn Du das i mit einem if prüfen willst, darfst Du die möglichen Werte von i nicht mit AND prüfen (wird immer false, da i nicht gleichzeitig verschiedene werte annehmen kann) , sondern mit einem ODER resp. mit

if (i == 1 | i == 2 | i == 3 | i == 5)


----------



## bone2 (8. Nov 2010)

wenn es nur so kleine zahlen sind, speicher sie doch auch als char. und mach ein char[] drauß.
alternativ ein Object[] mit Integer und Character füllen.

```
char y;
                y = 'x';
```
da müssn hochkommata rum um den char


----------



## KlemensyXYZ (8. Nov 2010)

Andi_CH hat gesagt.:


> Also wenn ich genau hinschaue machst du es schon -> Zeile 30 in deinem Code
> 
> In dem String hast du ganz viele characters drin ;-)
> 
> dann wandelst du die in int ...... (was du nicht zwingend musst)



hä?

kann das da oben bitte mal wer berichtigen?
Wäre echt super:toll:


----------



## KlemensyXYZ (8. Nov 2010)

bone2 hat gesagt.:


> wenn es nur so kleine zahlen sind, speicher sie doch auch als char. und mach ein char[] drauß.
> alternativ ein Object[] mit Integer und Character füllen.
> 
> ```
> ...



mi´t den ' sagter anstatt der zahlen 115 und 120


----------



## tuttle64 (8. Nov 2010)

KlemensyXYZ hat gesagt.:


> das mit dem char funzt aber immer noch nicht




Ein Array von Chars mit den gewünschten Elementen kannst Du so erzeugen

char zahlenFeld[] = {'1', '5', '7', 'S', 'X', '2'};


----------



## bone2 (8. Nov 2010)

KlemensyXYZ hat gesagt.:


> mi´t den ' sagter anstatt der zahlen 115 und 120



ja weil er jetzt den zahlenwert der einzelnen chars American Standard Code for Information Interchange ? Wikipedia in deinem int-array speichert. du kannst keine buchstaben in buchstabenform in einem int-array speichern. nimm ein char-array und speicher alles als char.


```
char feld = new char[anzahlElemente];
if (i == 0) {
    feld[i]='1';
}
```


----------



## KlemensyXYZ (8. Nov 2010)

ok danke an alle 

ich denke ich werde die Lösung von tuttle64 verwenden.
Dann kann er nicht sagen ich hätte nichts versucht.
und es funktioniert ja auch:applaus:

edit: außerdem is es die kürzeste Lösung und für mich am besten zu merken


----------



## bone2 (8. Nov 2010)

das reduziert deinen sourcecode praktischerweise auf eine zeile^^


----------



## KlemensyXYZ (8. Nov 2010)

KlemensyXYZ hat gesagt.:


> wie les ich denn einen char ein??
> 
> habe das noch nie gemacht



das würde mich für den fall der Fälle immer noch interessieren.

Auch so:


```
inData = stdin.readLine();
anzahlElemente = Integer.parseInt(inData);
```

oder wie?


----------



## tuttle64 (8. Nov 2010)

KlemensyXYZ hat gesagt.:


> das würde mich für den fall der Fälle immer noch interessieren.
> 
> Auch so:
> 
> ...




Damit liest Du die ganze Zeile ein. Um ein einzelnes Zeichen zu lesen verwende die Methode read().


----------



## Andi_CH (9. Nov 2010)

KlemensyXYZ hat gesagt.:


> hä?
> 
> kann das da oben bitte mal wer berichtigen?
> Wäre echt super:toll:



Dein Code:

```
System.out.println();
                System.out.println("Geben Sie die Zahl ein!");
                inData = stdin.readLine();
                zahl = Integer.parseInt(inData);
            
                zahlenFeld[i] = zahl;
```

Du wolltest Buchstaben und Ziffern mischen (Annahme von mir, der benutzer gibt nichtnur ziffern sondern auch Buchstaben ein und die sollen gespeichert werden)

Du liest die Eingaben 3. Zeile und wandelst die auf der 4. in Zahlen um

Wenn jetzt also der Benutzer auch Buchstaben eingibt braucht es Änderungen:

Ziel muss jetzt ein char[], String o.ä. sein
Die Umwandlung in eine Zahl ist unnötig

und zu guter letzt - du brauchst das alles ger nciht mehr zu tun,weil es ja schon im inData so drin ist, aber das habe ich damals nicht geschrieben, weil du sellbst auf die Idee kommen solltest.

Soooo falsch liege ich nicht oder du hast das Problem unverständlich beschrieben


----------

