baue noch ne Klasse, ne main-Methode und die Deklaration eines Arrays + Befüllung dazu, schon wird es klappen,
an dem Code liegt es nicht, sondern am Rest deines Programms,
vielleicht hat das Array die Länge 0,
falls es ein char[] ist, können auch unsichtbare Zeichen nerven
public static void main(String[] args) {
int[] c=new int[5];
for(int i=0;i<c.length;i++)
{
c=i;
}
for(int k=0;k<c.length;k++)
{
System.out.println(c[k]);//die zahl die in c steht wird ausgegeben
}
}
@jazzcookie:
kannste uns vllt mal die exception zukommen lassen?
nu will ich au n lösungsvorschlag in die runde werfen:
1. müsste es nich "k < c.length - 1" sein? sonst müsste doch ein "ArrayIndexOutOfBounds" geben
2. bau fix ein try-catch um den print un lass den die excpetion drucken un weiter machn...
1. müsste es nich "k < c.length - 1" sein? sonst müsste doch ein "ArrayIndexOutOfBounds" geben
2. bau fix ein try-catch um den print un lass den die excpetion drucken un weiter machn...
Entschuldigung, dass ich dich schon wieder korrigieren muss , aber
1. Es wird 0 bis n-1 durchlaufen, da kann keine ArrayIndexOutOfBoundsException kommen
2. Das einzige, was fliegen könnte, wäre eine RuntimeException, und diese würde sowieso von der JVM ausgegeben werden, wenn sie nicht abgefangen würde
cool danke hat geklappt den array auszugeben.leider war das ergebnis, dass ausgegeben wurde falsch.
mein programm hat eine einstellige zahl mit einer beliebig stelligen zahl multipliziert und das ergebnis sollte in dem array gespeichert sein den ich vorher ausgeben wollte.
die methode sieht so aus
Java:
publicstaticint[]mult(int[] a,int digit){int[]c=newint[a.length+1];//bei der multiplikation einer zahl mit einer einstelligen zahl hat das ergebnis hoechstens eine stelle mehrint b=0;//hier wird das ergebnis von digit*a[i] gespeichertint j=0;//j wird zaehlen wie oft wir die 10 von b abziehen muessen um b<10 zu erhaltenint d=0;//j wird seinen wert an d uebergeben,damit j wieder frei zum zaehlen istint i=0;//i arbeitet sich von ziffer zu ziffer entlang der zahl hochfor(i=a.length-1;i>0;i--);//startet gerade beim einer der zahl und durchlaeuft sie bis zum ende{
b=a[i]*digit+d;//a[i]*digit ist klar.+d wird gebraucht um überschüssige zehner aus der vorhergehenden multiplikation zu berücksichtigenwhile(b>=10)//wir brauchen explizit einer und zehner der berechneten zahl{
b=b-10;
j++;//j zählt wie oft die 10 abgezogen wird}
c[c.length-1]=b;//b ist jetzt reduziert auf seinen einer,kann also endlich in c[i] geschrieben werden
d=j;//j wird entleert und ist bereit zum zaehlen}
c[0]=d;//falls die zahl bei der multiplikation mit dem digit um eine stelle gewachsen ist ,dann steht der wert von d an dieser neuen stelle for(int k=0;k<c.length;k++){System.out.println(c[k]);//die zahl die in c steht wird ausgegeben}return c;//c wurde fertig beschrieben}
ich war mir eigentlich recht sicher, dass die rechnung richtig ausgefuehrt und das ergebnis richtig gespeichert werden.aber pustekuchen
der test sieht so aus:
[c]int []c=new int[a.length+1];//bei der multiplikation einer zahl mit einer einstelligen zahl hat das ergebnis hoechstens eine stelle mehr[/c] -> da du mit 37 multiplizierst, also mit einer nicht einstelligen Zahl, hat der Wert keinen Platz.