Mit dem letzten bis zum ersten Wert aus Array rechnen

Anfänger90

Mitglied
Hallo,
ich habe folgendes Problem. Und zwar soll ich die Werte im Array mit absteigender Potenz ausrechnen lassen und die einzelnen Werte ausgeben. Heißt bei einem Array wie {8,6,9} soll die 9^2 die 6^1 und die 8^0 gerechnet werden. Zudem kann das Array eine unabänige Größe haben und somit weiß ich nicht welche die erste Hochzahl ist. Dies soll zur Umrechnung von Zahlensystemen dienen. Die Befüllung des Array habe ich hinbekommen. Muss ich die Werte des Arrays umdrehen oder gibt es eine andere Möglichkeit? Und wie kann ich die einzelnen Werte dann zwischenspeichern, da ich die Rechnung mit ausgeben muss?
 
Ok das wäre so in etwa oder ?
for (int k=array.length; k=0; k--) {
}

Nur wie bekomme ich die Rechnung hin das er mit der höchsten Potenz und der letzten Zahl anfängt. Geht das irgendwie über array.length - 1 ?
 
Ja stimmt das müsste auch gehen. Dann müsste ich die erste Zahl im Array hoch 0 nehmen bis zur Array länge.
Allerdings komm ich nicht darauf wie ich die Werte des Arrays gerechnet bekommen mit den aufsteigenden oder absteigen Potzenten.

@Robat: muss k==0 sein
 
Überleg mal, die for-Schleife wird solange ausgeführt wie die Bedingung erfüllt ist. Wenn du k==0 setzt, dann wird die for-schleife solange ausgeführt, wie k den Wert 0 hat. Wenn du k am Anfang auf die Länge des Arrays setzt dann wird sie also gar nicht ausgeführt.
Was du willst ist, dass die Schleife solange ausgeführt wird wie k größer oder gleich 0 ist 🙂
 
Java:
double dezimal;
  double dezimal1 = 0;
  double summe = 0;
  int a=0;
  for(int k=Dezimalarray.length; k>=0; k--)

  {
  double b = Math.pow(15, a);
  dezimal =  Dezimalarray[a] * b;
  dezimal1 = dezimal1 + dezimal;
  System.out.println(""+Dezimalarray[a]+" mal 15 hoch "+a+" ist "+dezimal);
  System.out.println("Summe "+dezimal1+" ist der Wert im Dezimalsystem");
  a++;
  }

Habe dies jetzt Programmiert. Das Array ist vorgeben. Allerdings rechnet er jetzt genau falsch rum heißt er holt die letzte Zahl mal der letzten Indexzahl. Ist wahrscheinlich nur ein kleiner Fehler aber ich hänge fest.
 
Zuletzt bearbeitet von einem Moderator:
Die letzte Zahl im Array soll mit der ersten Indexzahl multipliziert werden. Habe wenn ich das Array umdrehe funktioniert es. Sitzte schon den ganzen Tag hier dran deswegen erkenn ich den Fehler wahrscheinlich auch nicht.
 
Versuch mal das hier:
Java:
double dezimal;
double dezimal1 = 0;
int a=0;
for(int k=Dezimalarray.length-1; k>=0; k--)
{
double b = Math.pow(15, k);
dezimal = Dezimalarray[a] * b;
dezimal1 = dezimal1 + dezimal;
System.out.println(""+Dezimalarray[a]+" mal 15 hoch "+k+" ist "+dezimal);
System.out.println("Summe "+dezimal1+" ist der Wert im Dezimalsystem");
a++;
}
 
Ich würde dir eig. nicht empfehlen das Array von hinten zu durchlaufen weil dann die Ausgabe auch von hinten anfängt und das lt. Aufgabenstellung ja nicht sein soll.
Einfacher wäre das hier:

Java:
/*
* Array mit den Zahlen
*/
int[] numArray = {9, 7, 6, 8};

// Durchlaufe das Array von vorne
for(int i = 0; i < numArray.length; i++)
{
    // ermittle den Exponenten. Dieser Ergibt sich aus der Länge des Arrays - 1 (da der größte Index ja die Länge -1 ist weil man bei 0 anfängt)
    // Das erste Element soll den höchsten Exp haben und das letzte Element den kleinsten Exp.
    // Wenn man von diesem Wert i abzieht hat man seinen Exponenten (siehe Tabelle weiter unten)
    int exp = (numArray.length-1)-i;
    double erg = Math.pow(numArray[i], exp);
    System.out.println(numArray[i] + "^" + exp + " = " + erg);
}

Tabelle:
durchlauf numArrayLength-1 i exp

0 3 0 3-0=3
1 3 1 3-1=2
2 3 2 3-2=1
3 3 3 3-3=0

PS: Das ist nicht genau auf dein Problem abgestimmt. Aber die Berechnung solltest du ja alleine hinkriegen 🙂
oder du machst es nach @DrZoidbergs Variante 😛
 
Perfekt. Danke!
@Robat Das ist egal. Ich brauche nur die richtige Dezimalzahl und die einzelnen Rechenschritte. Denn ich muss jetzt die Dezimalzahl in ein anderes Zahlensystem überführen.
Kann sein das ich eure Hilfe noch brauchen werde. 🙂 Trotzdem danke
 
Bräuchte nochmal kurz eure Hilfe. Und zwar muss ich die Dezimalzahl die ich gespeichert habe nun umrechnen ins 9er. Das habe ich mit folgendem Code gelöst.

do {
zahl1 = dezimal1%9;
zahl = (dezimal1-zahl1)/9;
myPage.println("Die Zahl "+dezimal1+" / 9 = "+zahl+" Rest: "+zahl1+"<br>");
dezimal1 = zahl;
} while (zahl > 0);

Das funktioniert auch soweit. Gerne würde ich das Resultat jetzt noch ausgeben. Heißt mit println die modoli (mehrzahl?) in umgekehrter Reihenfolge ausgeben. Ich dachte dazu ein Array zu initialisieren und diesen mit den Werten füllen und später das Array umgedreht auszugeben.
Gibt es eine Möglichkeit ein Array zu erstellen ohne die Größe vorher zu Wissen? Habe was zu Arraylist gelesen allerdings funktionierte das nicht wirklich.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben