# Character in Integer



## Csoft (16. Feb 2010)

Hallo zusammen,
Sorry wenn ich hier im falschen Forum bin, aber ich wusste nicht wo ichs reinpacken sollte.

Und zwar habe ich folgendes Problem:
Die Aufgabe besteht darin, ein Programm zu schreiben, welches zufällig Zahlen generiert und in eine vorgegebene Variable speichert.
Die Variablen sollen alle in einer Schleife ausgegeben werden. Array's sind leider VERBOTEN!

Mein Ansatz:

```
import java.util.*;

public class Char_in_Int {
    public static void main(String[] args) {
        Random rnd = new Random();
        int intervall = 10;

        // Variablen:
        int a = rnd.nextInt(intervall);
        int b = rnd.nextInt(intervall);
        int c = rnd.nextInt(intervall);
        int d = rnd.nextInt(intervall);
        int e = rnd.nextInt(intervall);
        int f = rnd.nextInt(intervall);
        int g = rnd.nextInt(intervall);
        int h = rnd.nextInt(intervall);
        int i = rnd.nextInt(intervall);
        int j = rnd.nextInt(intervall);

        // Ausgabeschleife:
        for (int x=97;x<107;x++)
        {
            System.out.println((char)x+" = ");
        }
    }
}
```

In der Schleife habe ich die Laufbedingung so gesetzt, dass das X den entsprechenden ASCII-Wert des jeweiligen Buchstaben hat und somit alle Buchstaben untereinander (mit einem Gleichheitszeichen dahinter) ausgegeben werden.

Jetzt kommt meine Frage:
Wie baue ich es jetzt ein, das hinter dem Gleichheitszeichen der jeweilige Wert der Variable steht ?


Ich hoffe man konnte mich verstehen, aber ich mache noch nicht so lange JAVA.
Vielleicht kann mir ja der ein oder andere einen Tipp geben...

Lg Csoft


----------



## eRaaaa (16. Feb 2010)

Csoft hat gesagt.:


> Wie baue ich es jetzt ein, das hinter dem Gleichheitszeichen der jeweilige Wert der Variable steht ?



Gar nicht, das geht niicht. Poste mal die komplette Aufgabenstellung!


----------



## Tharsonius (16. Feb 2010)

Der Idee mit der Schleife ist doch schon mal gut. Aber lass die Variablen a-j am besten ganz weg. Stattdessen nummerierst die Ausgaben durch, dann brauchst Du auch kein so komisches x in der Schleife.


```
for (int i=1; i<11;i++)
        {
            System.out.println("Zufallszahl "+i+" = "+rnd.nextInt(intervall));
        }
```


----------



## pool (16. Feb 2010)

Ich glaube worauf du hinaus willst ist, hier den Varibalennamen dynamisch einzufügen, sprich der Buchstabe in x soll den Variablennamen angeben. Das funktioniert meines Wissens in Java nicht, Variablenname müssen immer beim Compilieren schon festgelegt sein, und können nicht aus einer Variable ausgelesen werden. Sinnvoller wäre es daher sich die Variablen zu sparen und direkt in der Schleife die Zufallszahlen zu erzeugen.


----------



## Csoft (16. Feb 2010)

Tharsonius hat gesagt.:


> Der Idee mit der Schleife ist doch schon mal gut. Aber lass die Variablen a-j am besten ganz weg. Stattdessen nummerierst die Ausgaben durch, dann brauchst Du auch kein so komisches x in der Schleife.
> 
> 
> ```
> ...



Ja das hatte ich so oder so ähnlich auch schon vor, das Problem liegt allerdings darin, das nachher mit den Zahlen noch gerechnet werden muss und so geht das ja nicht oder...?

@eRaaaa: Ich habe leider keine "komplette" Aufgabenstellung dazu, es wurde uns nur mündlich und auch wenig genau gesagt. Aber eigenlich müsste daraus doch alles klar werden?! 
Zumindest bei mir


----------



## Tharsonius (16. Feb 2010)

Nun, wenn Du die Werte noch brauchst, kein Array verwenden darfst und die ausgeben willst, dann musst Du das wohl oder übel für jede Variable einzeln schreiben. Also 10 Zeilen mit System.out.println().

Weiss nicht ob Ihr schon soweit seid:
Dann wäre es aber sinnvoller die Variablen als Membervariablen zu schreiben, diese in einem Konstruktor zu erzeugen, eine Ausgabemethode zu schreiben, eine getter methode für jede Variable zu schreiben und in der main ein Objekt der Klasse zu erzeugen.


----------



## Csoft (16. Feb 2010)

und anders geht es wirklich nicht ?

trotzdem danke für eure schnelle hilfe ;-)


----------



## eRaaaa (16. Feb 2010)

naja, es ginge irgendwie mit switch evtl:

```
public class Char_in_Int {

    static Random rnd = new Random();
    final static int intervall = 10;
    static int a = rnd.nextInt(intervall);
    static int b = rnd.nextInt(intervall);
    static int c = rnd.nextInt(intervall);
    static int d = rnd.nextInt(intervall);
    static int e = rnd.nextInt(intervall);
    static int f = rnd.nextInt(intervall);
    static int g = rnd.nextInt(intervall);
    static int h = rnd.nextInt(intervall);
    static int i = rnd.nextInt(intervall);
    static int j = rnd.nextInt(intervall);

    public static void main(String[] args) {
	for (int x = 97; x < 107; x++) {
	    System.out.println((char) x + " = " + var((char) x));
	}
    }

    private static int var(char x) {
	switch (x) {
	case 'a':
	    return a;
	case 'b':
	    return b;
	    // usw.
	default:
	    return -1;
	}
    }

}
```

aber naja ... :bae:


----------



## Tharsonius (16. Feb 2010)

Es ist jedenfalls nicht möglich einen Variablennamen dynamisch zu halten und dann das eine oder das andere zu verwenden, das geht nicht.


----------



## Gast2 (16. Feb 2010)

Sind nur Array's verboten oder alle Arten von Containern/Collections?


----------



## Schumi (16. Feb 2010)

Tharsonius hat gesagt.:


> Nun, wenn Du die Werte noch brauchst, kein Array verwenden darfst und die ausgeben willst, dann musst Du das wohl oder übel für jede Variable einzeln schreiben. Also 10 Zeilen mit System.out.println().
> 
> Weiss nicht ob Ihr schon soweit seid:
> Dann wäre es aber sinnvoller die Variablen als Membervariablen zu schreiben, diese in einem Konstruktor zu erzeugen, eine Ausgabemethode zu schreiben, eine getter methode für jede Variable zu schreiben und in der main ein Objekt der Klasse zu erzeugen.



Wobei das ja auch nur eine Art Simulation eines Arrays mit einer eigenen Klasse wäre. Irgendwie scheint es mir, dass doch die Aufgabenstellung so wie hier beschrieben nicht ganz vollständig ist.


----------



## hemeroc (16. Feb 2010)

Tharsonius hat gesagt.:


> Es ist jedenfalls nicht möglich einen Variablennamen dynamisch zu halten und dann das eine oder das andere zu verwenden, das geht nicht.



Das ist so nicht ganz korrekt ^^ wenn die variablen membervariablen sind kannst du sie sehr wohl auch in einer schleife durchgehen ohne deren namen zu kennen.

Reflections - Field

allerdings ist das "relativ" langsam und ich denke nicht das der, der die angabe gestellt hat das auch so gemeint hat. also mehr oder weniger hier nur der vollständigkeit halber.

LG Hemeroc


----------



## Janus (17. Feb 2010)

> Die Aufgabe besteht darin, ein Programm zu schreiben, welches zufällig Zahlen generiert und in eine vorgegebene Variable speichert.
> Die Variablen sollen alle in einer Schleife ausgegeben werden. Array's sind leider VERBOTEN!


Wenn man schon so seltsame Vorgaben bekommt, sollte man auch seltsame Lösungen liefern 

```
public static void main( String[] args ) {
	Random rnd = new Random();
	int var = 10; // eine variable
	for( int i = 0; i < var; ++i ) { // eine schleife
		var = rnd.nextInt( var );
		System.out.println( var ); // ausgabe einiger zahlen 
	}
	var += 1; // variable wiederverwendet
	// programm sinnlos, aufgabe erfüllt
}
```


----------

