array a(i) fehler

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 array a(i) fehler

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
public class Algorithmen {

   
    public static int[] countElements(int[] werte, int max, int numBuckets) {
        int x=0;
  int [] a = new int [numBuckets];

int [] b = new int [numBuckets];
int [] z = new int [numBuckets];
int w=0;

x=(max-numBuckets)/(numBuckets);
    
 for (int i=0;i<numBuckets;i++){
a[i]=i+x*(i);
}
   
 for (int i=0;i<numBuckets;i++){
b[i]=i+(i+1)*(x);
}
 

 for (int i=0;i<numBuckets;i++){
for (int y=0;y<werte.length;y++){
if(werte[y]<=b[i]  && werte[y]>=a[i]    ){
w++;
 }
}
z[i]=w;

}
return z;
}
 public static void main(String[] args) {
               System.out.print("countElements{0, 9, 2, 3, 4, 5, 7, 8, 1},10, 2): { ");
        int[] werte = {0, 9, 2, 3, 4, 5, 7, 8, 1};
        int max = 10;
        int numBuckets = 2;
        int[] counted = countElements(werte, max, numBuckets);
        for (int i = 0; i < counted.length; i++) {
            System.out.print(counted[i] + " ");
        }
        System.out.println("}"); // { 5 4 }
    }

}



auf a(i) wird nicht richtig zugegriffen, aber wies0?
 
Auf diesen Beitrag antworten »
eulerscheZahl

Je genauer du die Frage stellst, desto höher sind die Chancen auf eine sinnvolle Antwort.
Ich sehe hier ein Programm, dass Arrays erstellt, irgendwas damit tut und dann { 5 9 } ausgibt.

Ich habe keine Ahnung, was die eigentliche Intention ist, also kann ich dir so nicht helfen.
Fangen wir also damit an: was soll das Programm tun?
Auf diesen Beitrag antworten »
neuling96

Implementieren Sie eine offentlich sichtbare statische Methode int[] countElements(int[]
werte, int max, int numBuckets) in Java, die das Integer-Intervall [0;max-1] in gleich große
zusammenhängende Teilintervalle unterteilt und in einem Ergebnisarray des Typs int[] die Anzahl der
Array-Elemente aus werte zur¨uckgibt, die in das entsprechende Teilintervall fallen. Sie konnen davon
ausgehen, dass beide Arrays eine L¨ange von mindestens 1 haben, dass max > 0 und max durch
numBuckets teilbar ist. Außerdem konnen Sie annehmen, dass alle Zahlen in werte im Intervall
[0;max-1] liegen.
Auf diesen Beitrag antworten »
eulerscheZahl

Könnte man zwar deutlich kürzer machen, aber du hast es ja schon fast.
Lösche die Variable w. Zeile 26 wird zu z[i]++; Und Zeile 29 fliegt raus. feritg.
 
Auf diesen Beitrag antworten »
neuling96

vielen dank hat funktioniert, aber was genau war falsch an

w++;
}
}
z[i]=w;
?

"Könnte man zwar deutlich kürzer machen"

wie?
Auf diesen Beitrag antworten »
eulerscheZahl

Du hast den Wert zu jedem Bucket hinzugefügt, solange der Mindestwert passt. Alternativ kannst du auch nach z[i]=w;[/“] ein [b]w=0; einfügen, dann geht es auch. Du hattest nämlich den Zähler nicht zurückgesetzt.

Das, woran ich beim Lesen der Aufgabe als ersten gedacht habe, ist das hier:
code:
1:
2:
3:
4:
5:
6:
7:
public static int[] countElements(int[] werte, int max, int numBuckets) {
	int[] result = new int[numBuckets];
	for (int i = 0; i < werte.length; i++) {
		result[werte[i] * numBuckets / max]++;
	}
	return result;
}
Auf diesen Beitrag antworten »
neuling96

wow das ist kurz! Daumen hoch
Auf diesen Beitrag antworten »
neuling96

(istquadrat prüft ob zahl eine quadratzahl ist
int fib gibt ein n elmenten array mit den werten der fib reihe)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
public class Algorithmen {

    
    public static boolean istQuadratzahl(int zahl) {
int n=0;
while ( n*n< zahl){
n++;       
}
if (n*n==zahl){
return true;
}else {
return false;
}

    }

    public static int[] fib(int n) {
        int[] a= new int [n];
           a[0]=0;
           a[1]=1;
    for (int i=2; i<n;i++){
    a[i]=a[i-1]+a[i-2];
    }
 }
    public static int[] countElements(int[] werte, int max, int numBuckets) {
     int x=0;
  int [] a = new int [numBuckets];

int [] b = new int [numBuckets];
int [] z = new int [numBuckets];
int w=0;

x=(max-numBuckets)/(numBuckets);
    
 for (int i=0;i<numBuckets;i++){
a[i]=i+x*(i);
b[i]=i+(i+1)*(x);
}
 

 for (int i=0;i<numBuckets;i++){
for (int y=0;y<werte.length;y++){
if((werte[y]<=b[i]  && werte[y]>=a[i] )   ){
z[i]++;
 }
   }
 return z;
}

    
  

    public static void main(String[] args) {
        System.out.println("istQuadratzahl(1337): " + istQuadratzahl(1337)); // false

        System.out.print("fib(6): { ");
        int[] fibonacci = fib(6);
        for (int i = 0; i < fibonacci.length; i++) {
            System.out.print(fibonacci[i] + " ");
        }
        System.out.println("}"); // { 0 1 1 2 3 5 }

        System.out.print("countElements({0,9,2,3,4,5,7,8,1}, 10, 2): { ");
        int[] werte = {0, 9, 2, 3, 4, 5, 7, 8, 1};
        int max = 10;
        int numBuckets = 2;
        int[] counted = countElements(werte, max, numBuckets);
        for (int i = 0; i < counted.length; i++) {
            System.out.print(counted[i] + " ");
        }
        System.out.println("}"); // { 5 4 }
    }

}


illegal start of expression

beim public static void

wie kann es beheben?
Auf diesen Beitrag antworten »
eulerscheZahl

Du hast schon wieder die Klammern falsch gesetzt.
Versuche dich am Einrücken, dann findest du den Fehler auch schneller.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
    public static boolean istQuadratzahl(int zahl) {
		int n=0;
		while ( n*n< zahl){
			n++;       
		}
		if (n*n==zahl){
			return true;
		} else {
			return false;
		}

    }

    public static int[] fib(int n) {
        int[] a= new int [n];
        a[0]=0;
        a[1]=1;
	    for (int i=2; i<n;i++){
    		a[i]=a[i-1]+a[i-2];
	    }
	    return a;
    }
    
    public static int[] countElements(int[] werte, int max, int numBuckets) {
		int x=0;
		int [] a = new int [numBuckets];

		int [] b = new int [numBuckets];
		int [] z = new int [numBuckets];
		int w=0;
		
		x=(max-numBuckets)/(numBuckets);
	    
		for (int i=0;i<numBuckets;i++){
			a[i]=i+x*(i);
			b[i]=i+(i+1)*(x);
		}
 

		for (int i=0;i<numBuckets;i++){
			for (int y=0;y<werte.length;y++){
				if((werte[y]<=b[i]  && werte[y]>=a[i] )){
					z[i]++;
				}
			}
		}
		return z;
	}
    
  

    public static void main(String[] args) {
        System.out.println("istQuadratzahl(1337): " + istQuadratzahl(1337)); // false

        System.out.print("fib(6): { ");
        int[] fibonacci = fib(6);
        for (int i = 0; i < fibonacci.length; i++) {
            System.out.print(fibonacci[i] + " ");
        }
        System.out.println("}"); // { 0 1 1 2 3 5 }

        System.out.print("countElements({0,9,2,3,4,5,7,8,1}, 10, 2): { ");
        int[] werte = {0, 9, 2, 3, 4, 5, 7, 8, 1};
        int max = 10;
        int numBuckets = 2;
        int[] counted = countElements(werte, max, numBuckets);
        for (int i = 0; i < counted.length; i++) {
            System.out.print(counted[i] + " ");
        }
        System.out.println("}"); // { 5 4 }
    }


istQuadratzahl gefällt mir nicht, ist viel zu langsam.

code:
1:
2:
3:
4:
public static boolean istQuadratzahl(int zahl) {
	int wurzel = (int)Math.sqrt(zahl);
	return wurzel * wurzel == zahl;
}
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »