Werte aus einer sortierten Liste auslesen

HansOne

Mitglied
Hallo,

ich habe ein Problem wo ich einfach keine Idee zur Lösung habe.

Und zwar habe ich eine Liste von doubles die der Größe nach sortiert wird.

Java:
  double[] lengths = new double[] {F, C, E, H, J, A, D, B, G, I};

  Arrays.sort(lengths);

  System.out.print("Sorted double array:\t "); //Sortierte Liste von klein nach groß
  for(int index=0; index < lengths.length ;  index++)
    System.out.print(" " + lengths[index]);

momentan starten die sortierte Liste mit dem kleinsten Wert.
Wie kann man die sortierte Liste von groß nach klein umstellen?

Das eigentliche Problem ist jedoch, dass ich nun ein anderes double habe, z.B. i=6 ...

Nun sollen demnach die größten 6 Werte in der Liste den Wert 1 bekommen und die restlichen 0.
Wenn der Wert größer als die Anzahl der sortierten Elemente ist kriegen weiterhin alle den Wert 1.

Beispiel:

Wert=6

10 --> 1
9 --> 1
8 --> 1
7 --> 1
6 --> 1
5 --> 1
4 -- >0
3 -- >0
2 -- >0
1 -- >0

Sprich den doubles aus der Liste müssen irgendwie die neuen Werte zugeordnet werden (1 oder 0).
Mit den neuen Werten für A bis J will ich dann weiter rechnen.
Ich habe keine Ahnung wie ich das anstellen kann. ???:L

Hoffe jemand kann helfen.

Gruß Hans
 
G

Gast2

Gast
momentan starten die sortierte Liste mit dem kleinsten Wert.
Wie kann man die sortierte Liste von groß nach klein umstellen?
Du kannst Arrays.sort noch einen Comparator übergeben, da kannst du dann festlegen wie sortiert werden soll.

Sprich den doubles aus der Liste müssen irgendwie die neuen Werte zugeordnet werden (1 oder 0).
Mit den neuen Werten für A bis J will ich dann weiter rechnen.
Ich habe keine Ahnung wie ich das anstellen kann.
Nach dem sortieren kannst du nochmal durchs Array gehen und die Werte in eine Map stecken, die ersten x Werte mapst du dann auf 1, den rest auf 0.
 

HansOne

Mitglied
kannst du mir ein Beispiel geben oder sagen wo ich da was konkretes finde?
Bin ein blutiger Anfänger und bastel nur aus Spaß und Interesse ein wenig rum ;)
 

HansOne

Mitglied
danke für die Antwort.
Auch wenn ich damit leicht überfordert bin.
Muss jetzt erstmal rauskriegen, wie ich die Werte nach dem sortieren in die Map bekomme... ^^
 
G

Gast2

Gast
Dein fertiger Code könnte dann irgendwie so aussehen:
Java:
		Double[] lengths = new Double[] {3.0, 1.0, 2.0, 7.0, 8.0, 4.0, 5.0, 6.0, 9.0, 10.0};
		
		Arrays.sort(lengths, new Comparator<Double>() {
			@Override
			public int compare(Double o1, Double o2) {
				return (int)(o2 - o1);
			}
		});
		
		Map<Double, Integer> map = new HashMap<Double, Integer>();
		
		int wert = 6;
		
		for (int i = 0; i < lengths.length; i++) {
			int nr = (i < wert) ? 1 : 0;
			map.put(lengths[i], nr);
		}
		
		System.out.println(map);
Die Ausgabe von der Map ist jetzt natürlich nichtmehr sortiert.
 

Hobbes

Aktives Mitglied
Für die absteigende Sortierung gibt es bereits einen fertigen Comparator

Java:
import java.util.Arrays;
import java.util.Collections;

public class KSKB {
	public static void main(String[] args) {
		Double[] lengths = new Double[] { 3.0, 1.0, 2.0, 7.0, 8.0, 4.0, 5.0, 6.0, 9.0, 10.0 };
		Arrays.sort(lengths, Collections.reverseOrder()); // absteigend sortieren
		System.out.print("Sorted double array:\t ");
		for (int index = 0; index < lengths.length; index++)
			System.out.print(" " + lengths[index]);
	}
}
 

HansOne

Mitglied
Dein fertiger Code könnte dann irgendwie so aussehen:
Java:
		Double[] lengths = new Double[] {3.0, 1.0, 2.0, 7.0, 8.0, 4.0, 5.0, 6.0, 9.0, 10.0};
		
		Arrays.sort(lengths, new Comparator<Double>() {
			@Override
			public int compare(Double o1, Double o2) {
				return (int)(o2 - o1);
			}
		});
		
		Map<Double, Integer> map = new HashMap<Double, Integer>();
		
		int wert = 6;
		
		for (int i = 0; i < lengths.length; i++) {
			int nr = (i < wert) ? 1 : 0;
			map.put(lengths[i], nr);
		}
		
		System.out.println(map);
Die Ausgabe von der Map ist jetzt natürlich nichtmehr sortiert.

Also die Zuordnung der 1 und 0 hat natürlich gepasst...

Aber das Problem ist ja, dass die Ausgabe nun so aussieht:

Anzahl der zu vergebenden 1en: 6.0
{0.1=0, 0.8=1, 0.7=0, 0.9=1, 0.6=1, 0.5=1, 0.6000000000000001=0, 0.4=1, 0.2=0}

Meine 10 Eingangswerte sind in dieser Form:
RPA, RPB, RPC, RPD, RPE, RPF, RPG, RPH, RPI, RPJ
davon hat jedes double einen Zahlenwert.

Nun müsste ich eine Ausgabe in folgender Form haben:

RPA(neu)=1
RPB(neu)=1
RPC(neu)=0
......

weil ich will ja mit den neuen Werten RPA(neu) etc weiterrechnen...
hoffe ich drücke mich verständlich aus ^^
 
Zuletzt bearbeitet:

Atze

Top Contributor
irgendwie komm ich da ganz durcheinander :/ hast du jetzt doubles als primitive werte, oder hast du ein mapping mit deinen PR... strings?

musst du das mit einem array machen, oder wäre nicht doch eine (hash-,tree-)map angebrachter? irgendwie reden hier alle aneinander vorbei, oder nicht? :)
 

HansOne

Mitglied
ausgangslage sind zehn double-Werte denen je nach größe 1en und 0en zugeordnet werden sollen.
Die wieviel größten davon den 10 Werten legt ein sich anderweitig ergebender double-wert fest.

So ganz haut oben was mit dem code nicht hin, weil mein der wert der die Anzahl der 1en festlegt ist ein double... und das Schema rechnet ja mit int-Werten...
 

HansOne

Mitglied
momentan sieht es so aus:

Java:
double RPA = BMPA-GBMPA; 
  
  double RPB = BMPB-GBMPB;
  
  double RPC = BMPC-GBMPC;
  
  double RPD = BMPD-GBMPD;
  
  double RPE = BMPE-GBMPE;
  
  double RPF = BMPF-GBMPF;
 
  double RPG = BMPG-GBMPG;
  
  double RPH = BMPH-GBMPH;
  
  double RPI = BMPI-GBMPI;
  
  double RPEigene = BMPEigene-GBMPEigene;
  
  int restmandate = (int) RestMandate;
  
  System.out.println(restmandate);
    
  //Sortierung des Prozenteüberschusses

  Double[] lengths = new Double[] {RPA, RPB, RPC, RPD, RPE, RPF, RPG, RPH, RPI, RPEigene};
  
  Arrays.sort(lengths, new Comparator<Double>() {
      @Override
      public int compare(Double o1, Double o2) {
          return (int)(o2 - o1);
      }
  });
  
  Map<Double, Integer> map = new HashMap<Double, Integer>();
  
  int wert = restmandate;
  
  for (int i = 0; i < lengths.length; i++) {
      int nr = (i < wert) ? 1 : 0;
      map.put(lengths[i], nr);
  }
  
  System.out.println(map);

Die Console gibt folgendes aus:

{0.1=0, 0.30000000000000004=0, 0.8=1, 0.9=1, 0.7=1, 0.6=0, 0.5=0}

Also da haut was nicht hin :(
 

HansOne

Mitglied
Die Console gibt folgendes aus:

5
{0.0=0, 0.03=0, 0.495=1, 0.8999999999999999=1, 0.050000000000000044=0, 0.575=1, 0.25=0, 0.3=0}

Also müsste auf 10 Werte 5 mal die 1 verteilt werden.

In der Cosole wird jedoch nur für 8 Werte eine Zuordnung angezeigt... irgendwas stimmt da noch nicht :(
Ich werde mir die Eingangswerte nochmal von der Cosnole anzeigen lassen um zu schauen wos vielleicht haken kann...
 

HansOne

Mitglied
Also folgendes hab ich mir mal anzeigen lassen:

Eingangswerte:

RPA:0.5
RPB:0.6000000000000001
RPC:0.55
RPD:0.43
RPE:0.6
RPF:0.5
RPG:0.2
RPH:0.3
RPI:0.7
RPEigene:0.9

Anzahl der nötigen 1en: 5

{0.55=1, 0.5=0, 0.6=1, 0.7=1, 0.9=1, 0.43=0, 0.6000000000000001=1, 0.2=0, 0.3=0}

Es wurden unten diesmal die 1en richtig auf die größten Werte verteilt.
Jedoch taucht nur einmal die 0.5 auf, obwohl es sie eigentlich 2mal geben müsste siehe Eingangswerte.
 

HansOne

Mitglied
nochmal mit anderen Werten:

Eingangswerte:

RPA:0.45
RPB:0.48
RPC:0.165
RPD:0.12899999999999998
RPE:0.18600000000000003
RPF:0.15
RPG:0.36
RPH:0.54
RPI:0.21
RPEigene:0.27

Anzahl der nötigen 1en: 3

{0.54=1, 0.18600000000000003=0, 0.27=0, 0.12899999999999998=0, 0.36=0, 0.165=0, 0.21=0, 0.48=1, 0.15=0, 0.45=1}

--> Man sieht, dass wenn die Eingangswerte unterschiedlich sind, sie unten auch alle angezeigt werden. Sobald sich aber z.B. drei Eingangswerte den selben Wert haben, werden sie einfach als ein Wert zusammengefasst.

Würde konkret bedeuten:

Typ A = 0.53
Typ B = 0.53

Dann würde in der Console einmal 0.53 = 1(z.B.) auftauchen... müsste aber zweimal auftauchen.
 

njans

Top Contributor
Wenn du so nett wärst, einmal den jetzigen Code zu zeigen, kann man sich das noch mal angucken, denn ich habe den Thread nicht verfolgt und da sind einige Änderungen wohl geschehen.
 

HansOne

Mitglied
Java:
double RPA = BMPA-GBMPA;
  System.out.println("RPA:" + RPA);
  
  double RPB = BMPB-GBMPB;
  System.out.println("RPB:" + RPB);
  
  double RPC = BMPC-GBMPC;
  System.out.println("RPC:" + RPC);
  
  double RPD = BMPD-GBMPD;
  System.out.println("RPD:" + RPD);
  
  double RPE = BMPE-GBMPE;
  System.out.println("RPE:" + RPE);
  
  double RPF = BMPF-GBMPF;
  System.out.println("RPF:" + RPF);
 
  double RPG = BMPG-GBMPG;
  System.out.println("RPG:" + RPG);
  
  double RPH = BMPH-GBMPH;
  System.out.println("RPH:" + RPH);
  
  double RPI = BMPI-GBMPI;
  System.out.println("RPI:" + RPI);
  
  double RPEigene = BMPEigene-GBMPEigene;
  System.out.println("RPEigene:" + RPEigene);
  
  int restmandate = (int) RestMandate;
  
  System.out.println(restmandate);
    
  //Sortierung des Prozenteüberschusses

  Double[] lengths = new Double[] {RPA, RPB, RPC, RPD, RPE, RPF, RPG, RPH, RPI, RPEigene};
  
  Arrays.sort(lengths, new Comparator<Double>() {
      @Override
      public int compare(Double o1, Double o2) {
    	  return o2.compareTo(o1);                   //fehler!?
      }
  });
  
  Map<Double, Integer> map = new HashMap<Double, Integer>();
  
  int wert = restmandate;
  
  for (int i = 0; i < lengths.length; i++) {
      int nr = (i < wert) ? 1 : 0;
      map.put(lengths[i], nr);
  }
  
  System.out.println(map);

CONSOLE:

RPA:0.5
RPB:0.6
RPC:0.9
RPD:0.8
RPE:0.4
RPF:0.5
RPG:0.3
RPH:0.5
RPI:0.6
RPEigene:0.4

Anzahl der zu vergebenden 1en = 6

{0.8=1, 0.5=0, 0.6=1, 0.9=1, 0.4=0, 0.3=0}

Anmerkung:

Man sieht, dass er nicht alle Werte in der Console ausgibt... und die Vergabe der 1en klappt auch nicht immer in der richtigen Anzahl...

Wenn das dann mal klappen sollte, muss ich irgendwie mit den neuen Werten (1 oder0) RPAneu, PRBneu etc als doubles weiter rechnen können...
 

HoaX

Top Contributor
Du verwendest lengths als Key für die Map, und dort kommen Werte doppelt vor, und das geht in einer Map nicht.
Lengths würde ich mal umbenennen, ist so völlig unaussagekräftig.
In deiner zitierten Ausgabe fehlt jene von "restmandate". Sicher dass der Wert >= 1 ist?

Poste doch am Besten mal ein KSKB wo deine Methode mit statischen Werten aufgerufen wird.
 

njans

Top Contributor
0.9
0.8
0.6
0.6
0.5
0.5
-
0.5
0.4
0.4
0.3

Also so sieht die sortierte Liste aus (sollte invertiert zu der Liste sein, die lengths nach dem sort steckt).

So, hierbei stellt sich dann bei dir folgendes Problem:
Du Kannst in einer Map keine 2 Werte auf den selben Key legen. Somit überschreibst du 0.5 und 0.4 und 0.6 und es bleibt der Wert, den du als letztes hinzugefügt hast, dabei sind die Wert okay, bis auf 0.5, da der 6te Wert mit "1" belegt wird, aber danach der Siebte (wieder 0.5) dann "0" erhält. Damit überschreibst du deine Eins.
 

HansOne

Mitglied
In deiner zitierten Ausgabe fehlt jene von "restmandate". Sicher dass der Wert >= 1 ist?

Dies sind die Restmandate ;) Definitiv größer 1!

Was sollte man statt "lenghts" nehmen?

Poste doch am Besten mal ein KSKB wo deine Methode mit statischen Werten aufgerufen wird.

Du meinst den gesamten code mit andere es testen können? (sry sagt mir nichts^^)

@njans: Wie kann ich das Problem umgehen? Bin wirklich eher nichtwissend... wollte nur ein kleines Applet zu einem Browsergame machen ;)

Gruß
 

njans

Top Contributor
Du könntest 2 Listen machen:
Eine Liste für die, die deine Bedingung erfüllen (die 6 größten) und eine, für die restlichen Elemente :)
 

HansOne

Mitglied
ok, muss ich mal schaun ob ich das hinbekomme....^^

krieg ich am ende die Werte RPAneu, RPBneu etc mit ihren neuen Werten (1 oder0) als double irgendwie wieder raus? muss ja mit denen weiter rechnen...
 
N

nillehammer

Gast
Java:
package spielwiese;

import java.util.*;

public final class Test {

	private static final SortedSet<Double> MY_DOUBLES_NATURAL = new TreeSet<Double>(
			Arrays.asList(0.1D, 0.2D, 0.3D, 0.4D, 0.5D, 0.6D, 0.7D));

	private static final SortedSet<Double> MY_DOUBLES_REVERSE = new TreeSet<Double>(
			Collections.reverseOrder());
	static {
		MY_DOUBLES_REVERSE.addAll(MY_DOUBLES_NATURAL);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args ) throws Throwable {

		System.out.println("MY_DOUBLES_NATURAL: " + MY_DOUBLES_NATURAL);

		System.out.println("MY_DOUBLES_REVERSE: " + MY_DOUBLES_REVERSE);

		System.out.println("naturalllySortedToArray: "
				+ Arrays.deepToString(naturalllySortedToArray()));

		System.out.println("reverseSortedToArray: "
				+ Arrays.deepToString(reverseSortedToArray()));

		System.out.println("countElementsGreaterEqual(0)="
				+ countElementsGreaterEqual(0D)); // sollte 7 ergeben

		System.out.println("countElementsGreaterEqual(0.55)="
				+ countElementsGreaterEqual(0.55D)); // sollte 2 ergeben

		System.out.println("countElementsGreaterEqual(0.7D)="
				+ countElementsGreaterEqual(0.7D)); // sollte 1 ergeben

		System.out.println("countElementsGreaterEqual(0.8)="
				+ countElementsGreaterEqual(0.8D)); // sollte 0 ergeben
	}

	private static final Double[] naturalllySortedToArray() {

		return MY_DOUBLES_NATURAL.toArray(new Double[MY_DOUBLES_NATURAL.size()]);
	}

	private static final Double[] reverseSortedToArray() {

		return MY_DOUBLES_REVERSE.toArray(new Double[MY_DOUBLES_REVERSE.size()]);
	}

	private static final int countElementsGreaterEqual(final double value ) {

		return MY_DOUBLES_NATURAL.tailSet(value).size();
	}
	
}
 
N

nillehammer

Gast
Also ich hab die Sets gleich mit Werten vorbelegt, damit Du durch Aufruf von main sehen kannst, dass es geht. Du kannst sie natürlich auch leer erzeugen und die add()-Methoden auf den Sets aufrufen
Java:
private static final SortedSet<Double> MY_DOUBLES_NATURAL = new TreeSet<Double>();
 
private static final SortedSet<Double> MY_DOUBLES_REVERSE = new TreeSet<Double>(Collections.reverseOrder());

public static void main(String[] args ) throws Throwable {
  MY_DOUBLES_NATURAL.add(0.2D);
  MY_DOUBLES_REVERSE.add(0.2D);
}

Wenn du sicher stellen willst, dass Deine Doubles immer in beiden Sets landen, schreibst Du Dir eine Methode, die immer beide adds macht.
 

HansOne

Mitglied
ok, diese Möglichkeiten sind ja ganz nett... aber weiß nicht wie ich da mit meinem Problem weiter komme... :(

Zumal gleiche Einträge nachwievor ja nicht getrennt angezeigt werden.

Ich werde mein problem nochmal verdeutlichen, vielleicht drücke ich mich nur verkehrt aus ...

1.SchrittEingangswerte:
(doubles)

A = 0.956
B = 0.638
C = 0.263
D = 0.638
....
(10 Werte)

2.Schritt: Sortierte Werte

0.956
0.728
0.638
0.263
......
......

3.Schritt: 1en und 0en verteilen
-->Die Anzahl der 1en wird durch ein anderes varrierendes double bestimmt.

z.B. Anzahl = 3

0.956 = 1
0.728 = 1
0.638 = 1
0.263 = 0
......
......

4.Schritt: Neue Doubles als Ausgangswerte

A.neu = 1
B.neu = 1
C.neu = 0
D.neu = 1
......
......

--> mit den neuen Doublewerten will ich dann weiterrechnen....
 
N

nillehammer

Gast
1.SchrittEingangswerte
Machst Du durch das adden zum SortedSet
2.Schritt: Sortierte Werte
Ist schon erledigt. Die Werte werden beim adden gleich an die richtige Stelle sortiert
3.Schritt: 1en und 0en verteilen
Hab ich so verstanden, dass Dein variierendes Double der Grenzwert ist. Alle Elemente, die größer/gleich sind, sollen eine 1 bekommen, alle Werte die kleiner sind, eine 0 (Richtig?)
Das macht die Zeile hier:
Java:
return MY_DOUBLES_NATURAL.tailSet(value).size();
Genau genommen zählst Du damit die Anzahl der Elemente die größer/gleich Deinem Grenzwert sind.Um jetzt eine neue Menge zu bilden, rechnest Du:
- Gesamtanzahl - Anzahl der Elemente größer/gleich Grenzwert = Anzahl der Nullen
- Anzahl der Elemente größer/gleich Grenzwert = Anzahl der Einsen.
Wobei "Menge" hier eigentlich Liste oder Array meint, weil in einer Menge(engl. Set) Werte nicht doppelt vorkommen.
Was fehlt jetzt noch?
 
Zuletzt bearbeitet von einem Moderator:

njans

Top Contributor
Also es wäre wohl möglich anstelle des Doubles ein Objekt zu nehmen, dass zwei doubles hält.
Da du dann immer eine Referenz auf das jeweilige Objekt hast, kannst du da werte verändern oder hinzufügen :)
 

HansOne

Mitglied
Hab ich so verstanden, dass Dein variierendes Double der Grenzwert ist. Alle Elemente, die größer/gleich sind, sollen eine 1 bekommen, alle Werte die kleiner sind, eine 0 (Richtig?)

Nein ;) das varriierende double ist kein Grenzwert in dem Sinne. Beträgt das double z.B. 5, so sollen die 5 größten Werte eine 1 und die anderen 5 eine 0 bekommen.

Beträgt es 3, so eben nur die größten 3 ;)
 
N

nillehammer

Gast
Beträgt das double z.B. 5, so sollen die 5 größten Werte eine 1 und die anderen 5 eine 0 bekommen.
Da hab ich mich von dem Gleitkommatyp "Double" auf den Holzweg führen lassen. Für die Anforderung wäre ja ein ganzzahliges Argument (also int) nötig. Auf jeden Fall musst Du das Double in eine ganze Zahl umwandeln:
Java:
// Schneidet die Nachkommastellen einfach ab.
// 1.1, 1.7 1.9999 wird alles zu 1
final int anzahlEinsen = dasVariierendeDouble.intValue();
Und so geht's dann weiter:
Java:
// Wir wissen jetzt, wieviele Elemente am oberen Ende 1 werden sollen.
// Wie viele Elemente 0 werden sollen ist dann die Differenz aus size und anzahlEinsen
final int anzahlNullen = MY_DOUBLES_NATURAL.size() - anzahlEinsen;
Ab hier kommst Du mit SortedSets nicht weiter. In Sets (also auch SortedSets) kommt jedes Element nur einmal vor. Du kannst also nicht ein neues Set aufmachen und 5 mal 0 und 5 mal 1 adden. Dann hättest Du am Ende ein SortedSet mit genau zwei Elementen, erst die 0 und dann die 1. Wir müssen also ab hier auf einen Typ wechseln, der das Unterstützt, z.B. List, wenns eine (flexiblere) Collection sein soll oder ein Array. Sag, was Du lieber hättest. Dann machen wir weiter
 
N

nillehammer

Gast
Was ich mich bei der ganzen Chose gerade frage: Warum überhaupt der ganze Kram mit sortierten Doubles am Anfang? Nachdem Dein variierendesDouble ja garkein Grenzwert ist, sondern nur eine Anzahl. Eine Liste mit Nullen und Einsen könntest Du ja auch direkt erzeugen.
 

HansOne

Mitglied
// Schneidet die Nachkommastellen einfach ab.
// 1.1, 1.7 1.9999 wird alles zu 1
final int anzahlEinsen = dasVariierendeDouble.intValue();

Also das ist meiner Meinung nach nicht der richtige Ansatz für meinen Fall.
Ich will ja nicht gerundete Werte haben. Auch ein Wert wie 0.3452 kann in meinem Fall zu einer 1 werden.

Ich versuchs nochmal zu erklären:

Ich habe 10 Eingangswerte, alle unter 1!

mein variierendes double soll z.b. 7 betragen

A = 0,3745 --> 1
B = 0,7483 --> 1
C = 0,4325 --> 1
D = 0,2349 --> 0
E = 0,3245 --> 0
F = 0,8435 --> 1
G = 0,5832 --> 1
H = 0,3249 --> 1
I = 0,2349 --> 0
J = 0,5293 --> 1

Die 7 größten Werte haben somit eine 1 bekommen.

Die neuen double-Werte sollen nun heißen:

Aneu = 1
Bneu = 1
Cneu = 1
Dneu = 0
Eneu = 0
Fneu = 1
Gneu = 1
Hneu = 1
Ineu = 0
Jneu = 1

Ich hoffe das erklärt ganz gut was ich im Endeffekt am Ende bewerkstelligen will ;)
 
G

Gast2

Gast
Java:
public class Main {
	public static void main(String[] args) {
		Value a = new Value(0.3745);
		Value b = new Value(0.7483);
		Value c = new Value(0.4325);
		Value d = new Value(0.2349);
		Value e = new Value(0.3245);
		Value f = new Value(0.8435);
		Value g = new Value(0.8435);
		Value h = new Value(0.5832);
		Value i = new Value(0.2349);
		Value j = new Value(0.5293);
		
		Value[] values = new Value[]{a,b,c,d,e,f,g,h,i,j};
		
		Arrays.sort(values, new Comparator<Value>() {
			@Override
			public int compare(Value o1, Value o2) {
				return o2.getVal().compareTo(o1.getVal());
			}
		});
		
		int numberOfOnes = 7;
		
		for (int z = 0; z < values.length; z++) {
			values[z].setMapped(z < numberOfOnes ? 1 : 0);
		}
		
		System.out.println(Arrays.toString(values));
	}
	
	private static class Value {
		private double val;
		private int mapped;
		
		public Value(double val) {
			this.val = val;
		}
		
		public int getMapped() {
			return mapped;
		}
		public void setMapped(int mapped) {
			this.mapped = mapped;
		}
		public Double getVal() {
			return val;
		}
		
		@Override
		public String toString() {
			return "[" + val + " => " + mapped + "]";
		}
	}
}
 

HansOne

Mitglied
verdammt Eike, genau das trifft es :toll:

Wie kann man nun die neuen Werte als double ansprechen?
Brauch ja noch die neuen double Aneu, Bneu etc.... die natürlich noch zu den Ausgangswerten A, B, C passen müssen...
 
G

Gast2

Gast
Welche neuen double werte? an denen ändert sich doch nichts.
Jedes Value-Objekt hat einen double wert und einen integer, entweder 0 oder 1. Per getter kannst du darauf zugreifen.
 

HansOne

Mitglied
ja irgendwie steh ich da auf dem Schlauch...

wie kann ich in einer simplen mathmatischen Rechenoperation auf nen Integer-Wert eines Value-Objektes zugreifen?

Z.B. X + Y = "int"

Muss jetzt nurnoch ein Schritt bewältigen, dann sollte ich fertig mit dem Applet sein.
Wäre schön wenn mir da nochmal einer aushelfen kann ;)

Gruß Hans
 
G

Gast2

Gast
wie kann ich in einer simplen mathmatischen Rechenoperation auf nen Integer-Wert eines Value-Objektes zugreifen?
Hää ???:L
Sorry, ich versteh nicht wirklich was du da meinst. Beziehst du dich auf meine Value Klasse von oben? Was hat das mit mathematischen operationen zu tun?
 

HansOne

Mitglied
Also wie ich ja schon mehrmals erwähnt habe, muss ich mit den neuen Werten (1 oder 0) weitere mathematische Operationen durchführen.

Jedes Value-Objekt hat einen double wert und einen integer, entweder 0 oder 1. Per getter kannst du darauf zugreifen.

Wenn ich das richtig verstanden habe muss ich dafür ja auf die Integer-Werte zugreifen.

Wie stell ich das an, wenn ich z.B. folgenden mathematischen Ausdruck habe:

X +Y = "int" <-- wobei "int" für einen Integerwert (1 oder 0) steht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
E Eigenschaften Werte, in einer anderen Klasse, zuweisen Java Basics - Anfänger-Themen 40
H Methoden Nutzung der Werte einer ausgeführten Objektmethode in anderen Objektmethoden Java Basics - Anfänger-Themen 2
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
N Collections Werte aus .txt in einer Collection speichern Java Basics - Anfänger-Themen 11
J Werte aus einer Tabelle übernehmen Java Basics - Anfänger-Themen 2
Alex/89 Werte einer .txt Datei sortieren Java Basics - Anfänger-Themen 8
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
C auslesen bestimmter werte einer textdatei und anschl. hineinschreiben in eine neue txt-datei. Java Basics - Anfänger-Themen 2
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
F Wie Werte einer ArrayList an einen 'Custom'-Iterator übergeben? Java Basics - Anfänger-Themen 2
T Methoden in einer array werte vergleichen Java Basics - Anfänger-Themen 6
A Werte per Zufall aus einer Datei ziehen und in eine neue Datei schreiben Java Basics - Anfänger-Themen 9
T Collections Werte aus einer HashMap auslesen, oder gehts auch einfacher ? Java Basics - Anfänger-Themen 6
B Werte der Variable aus Klasse JTextArea in einer Datei der Klasse RandomAcessFile speichern Java Basics - Anfänger-Themen 10
K Einer Variablen Werte von anderen Variablen zuweisen Java Basics - Anfänger-Themen 5
S Werte aus einer bereitgestellten Klasse intiallisieren Java Basics - Anfänger-Themen 11
B Werte einer Spalte aus DB in einen Vector schreiben Java Basics - Anfänger-Themen 15
T integer Werte einer ArrayList miteinander addieren Java Basics - Anfänger-Themen 5
R S.M.A.R.T. Werte einer Festplatte Java Basics - Anfänger-Themen 2
K Werte in einer Datei speichern ? Java Basics - Anfänger-Themen 9
O Werte aus HashMap in einer ArrayList Java Basics - Anfänger-Themen 3
B Werte aus einer JCombobox in eine Liste Java Basics - Anfänger-Themen 16
U Zu viele werte in einer klasse Java Basics - Anfänger-Themen 4
J Werte in einer Klasse aus anderer Klasse manipulieren Java Basics - Anfänger-Themen 17
G einer Liste Werte hinzufügen Java Basics - Anfänger-Themen 9
M Berechnete Werte in einer Klasse weiternutzen! Java Basics - Anfänger-Themen 9
R Einer Methode mit Arrays Werte übergeben Java Basics - Anfänger-Themen 6
L Werte auslesen aus einer JTable Java Basics - Anfänger-Themen 2
T werte in einer linkedlist addieren Java Basics - Anfänger-Themen 35
A werte aus einer ini-datei auslesen. Java Basics - Anfänger-Themen 29
C Aus einer *.csv Datei bestimmte Werte Variablen zuweisen Java Basics - Anfänger-Themen 19
M Mehrere Werte aus einer Methode zurückgeben Java Basics - Anfänger-Themen 7
S Wie bekomme ich absolute Werte (Betrag einer Zahl)? Java Basics - Anfänger-Themen 5
bernd Werte einer Variablen auslesen! Java Basics - Anfänger-Themen 4
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum sind Werte in den Feldern ? Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
docmas 2DArray Werte werden nur untereinander ausgegeben Java Basics - Anfänger-Themen 1
M Nur int-Werte erlauben Java Basics - Anfänger-Themen 11
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
J Methoden Positive Werte zählen Java Basics - Anfänger-Themen 3
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
H OOP Werte mit Set verändern Java Basics - Anfänger-Themen 6
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
E In Array Werte einfügen? Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
I Werte (u.a. Geldbeträge) in Datenbank speichern und Rundungen? Java Basics - Anfänger-Themen 8
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
G Array Werte addieren Java Basics - Anfänger-Themen 4
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
C Zufallszahl + Werte bereich einstellen Java Basics - Anfänger-Themen 2
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
L 2 Dimensional Array werte überschreiben Java Basics - Anfänger-Themen 1
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
Rubberduck Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Neue Werte in ein Array hinzugeben Java Basics - Anfänger-Themen 8
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
A Negative float Werte? Java Basics - Anfänger-Themen 10
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
D Input/Output Input von zwei Koordinaten validieren und anschließend Werte speichern Java Basics - Anfänger-Themen 7
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
S Werte aufsummieren in java? Java Basics - Anfänger-Themen 5
M Werte des Arrays addieren Java Basics - Anfänger-Themen 5
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben