Math.floor und double Array

Loppo

Mitglied
Hallo,

ich habe einen double array, der wie folgt aussieht:

Java:
double a [] = {1.23 , 2.54 , 3.11 , 4.78 , 5.10 , 6.89, 7.34};

Wenn ich nun in mein Eingabefeld 0 eingebe, möchte ich das der Wert an Position 0, also 1.23, angezeigt wird. Bei 1, der Wert an Position 1 (2.54), bei 2 der Wert an Position 2 (3.11), usw.

Wie genau stellt man das an?

Gruß
Loppo
 
Was hat das mit Math.floor zu tun?

Rausholen aus dem Array kannst du den Wert so:
Java:
int index = 0;
int wert = a[index]; // wert = 1.23
 
Sie dir mal Arrays (Java Platform SE 6) an, ggf. einen Comparator schreiben

edit: ach so, es ging nur auf den Zugriff auf ein Element... Was hat das mit der Eingabe zu tun? Konsolen-/Kommandozeileneingabe? Heute sind leute auch nur schwer zu verstehen.
 
Zuletzt bearbeitet von einem Moderator:
Ganz einfach. Die Eingabe musst du erstmal in ein int parsen Integer (Java 2 Platform SE v1.4.2)

Jetzt solltest du noch überprüfen, ob die Eingabe in dem Bereich vom Array liegt. Also von 0 - (arraylänge-1)

Und musst du es nur noch ausgeben. Mit Console oder wie auch immer. Der Index entspricht dem geparsten int Wert.
 
So 5. edit, bevor man alles falsch macht. Die Eingabe kannst du am besten mit einem BufferedReader oder einem Scanner einlesen und dann parsen
 
Ganz einfach. Die Eingabe musst du erstmal in ein int parsen Integer (Java 2 Platform SE v1.4.2)

Jetzt solltest du noch überprüfen, ob die Eingabe in dem Bereich vom Array liegt. Also von 0 - (arraylänge-1)

Und musst du es nur noch ausgeben. Mit Console oder wie auch immer. Der Index entspricht dem geparsten int Wert.

Selbst mit dem Link schaffe ich es nicht, die Eingabe in ein int zu parsen. 😳 Verstehe ich das richtig, dass man die Eingabe (ein double) erstmal zum String machen muss und vom String dann zum int?
 
Wie liest du denn ein? Und warum ließt du nen double ein wenn du auf nen arrayindex zugreifen willst? Zeig doch mal nen bißchen mehr code.
 
Wie liest du denn ein? Und warum ließt du nen double ein wenn du auf nen arrayindex zugreifen willst? Zeig doch mal nen bißchen mehr code.

Double habe ich gewählt, weil ich bei Dezimaleingaben auch den Mittelwert bekommen möchte.

Zum Beispiel bei Eingabe 1.5 (Mittelwert aus 2.54 und 3.11 = 2,825).

An Code gibt es leider noch nicht mehr zu zeigen, als hier zu sehen ist.
 
Ich hab mir den Thread jetzt noch zweimal durchgelesen, aber ich versteh einfach nicht was du willst.
Du hast nur eine Zeile Code, sagst dass es auch nicht mehr Code gibt. Wo findet denn da die Eingabe statt? Und was soll denn da schlussendlich rauskommen? Im ersten Post war noch von Indexzugriffen die Rede, jetzt sprichst du von Mittelwerten.
 
Du hast nur eine Zeile Code, sagst dass es auch nicht mehr Code gibt. Wo findet denn da die Eingabe statt?
Genau das will ich ja hier rausfinden.

Und was soll denn da schlussendlich rauskommen? Im ersten Post war noch von Indexzugriffen die Rede, jetzt sprichst du von Mittelwerten.

Bei Ganzzahlen, soll der entsprechende Indexwert ausgegeben werden, bei Dezimalzahlen soll der entsprechende Mittelwert ausgegeben werden.
 
Heute verstehe ich schon mehr/deutlicher.

Also, wenn die Eingabe eine Ganzzahl ist (natürliche Zahl inkls. 0), dann soll das Element an dem entsprechenden Index ausgegeben werden, wenn die Eingebe eine Fließkommazahl ist (reelle Zahl \ ganze Zahlen), dann soll ein "Mittelwert von zwei oder mehr Elementen" ausgegeben werden. Jetzt ist die Frage, was du genau mit Mittelwert meinst.

Ein Tutorial über die Ein- und Ausgabe findest du hier: Lesson: Basic I/O (The Java™ Tutorials > Essential Classes)
Ein Beispielcode hier: I/O from the Command Line (The Java™ Tutorials > Essential Classes > Basic I/O)

A program is often run from the command line and interacts with the user in the command line environment. The Java platform supports this kind of interaction in two ways: through the Standard Streams and through the Console.

Kannst dich also entweder eintscheiden, einen der Standart-Streams zu wählen oder z.B. mit Console oder Scanner zu arbeiten.

Google z.B. auch: java io tutorial - Google-Suche oder suche hier im Forum nach Beispielen. Beispiele gibt es wirklich en masse
 
Ok, das Einlesen, bzw. Auslesen ist mein geringstes Problem. Das krieg ich schon hin. Mein Problem ist eher das ganze Konstrukt um den Array herum.
Wie muss die Eingabe erfolgen? Als String, als int, als double?
Wie kann die Eingabe den Wert aus dem Array herausholen?


Ich erkläre nochmal kurz (und hoffentlich verständlich), was ich genau vorhabe.

Ich gebe eine Ganzzahl ein. Die Ganzzahl soll den Wert an der entsprechenden Array-Position ausgeben.

double a [] = {1.23 , 2.54 , 3.11 , 4.78 , 5.10 , 6.89, 7.34};

Bei Eingabe 0 -> 1.23, bei Eingabe 1 -> 2.54, bei Eingabe 2 -> 3.11 usw.
Es soll aber auch möglich sein Dezimalzahlen einzugeben. Die Dezimalzahl
soll dann den Mittelwert der beiden Werte ausgeben, die im Index um sie herum
liegen.

Beispiele:

Bei Eingabe 0.5 -> Mittelwert aus 1.23 und 2.54, also 1,885.

Bei Eingabe 3.9 -> Mittelwert aus 4.78 und 5.10, also 4,94.

usw.
 
Also die Eingabe erfolgt natürlich als String 😉

Habe das einmal in den Editor eingetippt:
Java:
import java.io.*;

public class Loppo {

public static void main(String[] args) throws IOException {
	double[] da = { 1.23, 2.54, 3.11, 4.78, 5.10, 6.89, 7.34 };

	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

	System.out.println("int oder double eingeben:");
	String str;
	while ((str = br.readLine()) != null) {
		try {

			int i = Integer.parseInt(str);
			System.out.println(da[i]);
		} catch (NumberFormatException nfe) { 
			try {
				double d = Double.parseDouble(str);
				int i = (int) Math.floor(d);
				int j = (int) Math.ceil(d);
				if (i == j)
				System.out.println(da[i]);
				else
				System.out.println((da[i] + da[j]) / 2.0);
			} catch (NumberFormatException nfe2) { }
		}
	}
}

}
Das liefert die gewünschte Ausgabe (aber nach den Indices werden nicht geprüft):
Code:
int oder double eingeben:
0
1.23
1
2.54
2
3.11
0.5
1.885
3.9
4.9399999999999995
3.0
4.78
9
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
        at Loppo.main(Loppo.java:16)
Und wa soll dann geschehen?
 

Zurück
Oben