Hallo 
Ich würde gerne etwas nachfragen. Kann man ein Array auch direkt returnen?
Die Zeilen 16 und 17 können kompiliert werden. Die Zeile 31 (und auch Zeile 43) jedoch nicht. Das kann Java einfach nicht, oder? Oder schreibe ich das vielleicht nur irgendwie falsch hin?
Ich würde gerne etwas nachfragen. Kann man ein Array auch direkt returnen?
Java:
interface Bool
{
public int[] v();
}
class Or implements Bool
{
/**
* @return int[]
* j: 0 1
* ----
* i: 0 |0 1
* 1 |1 1
*/
public int[] v()
{
int[] v = {0, 1, 1, 1};
return v;
}
}
class Xor implements Bool
{
/**
* @return int[]
* j: 0 1
* ----
* i: 0 |0 1
* 1 |1 0
*/
public int[] v()
{
return {0, 1, 1, 0};
}
}
class Not implements Bool
{
/**
* @return int[]
* i: 0 |1 1
* 1 |0 0
*/
public int[] v()
{
return {1, 1, 0, 0};
}
}
class Main
{
public static void main(String[] args)
{
// Definition des boolschen Netzwerks:
// von j nach i:
// j: a b c
// (0) (1) (2)
// -----------
// i: a (0) | 0 1 2 a = b or c
// b (1) | 1 0 2 b = a xor c
// c (2) | 0 1 0 c = not b
// 0 entspricht false
// > 0 entspricht true
// Zahlen entsprechen der Reihenfolge.
// z. B.:
// j: a b c
// (0) (1) (2)
// -----------
// a (0) | 0 2 1 a = c -> b (Implikation)
int N = 3;
int[][] A = // [i][j]
{
{0, 1, 2},
{1, 0, 2},
{0, 1, 0}
};
Bool[] W = // [i]
{
new Or(),
new Xor(),
new Not()
};
// aktuelle Stati:
int[] s = {1, 0, 0};
//for(int i = 0; i < N; ++i)
int i = 0;
{
int[] a = A[i];
int[] v = W[i].v();
int[] js = new int[3]; // [0] bis [2] mit 0 initialisiert, sammelt alle j´s > 0
for(int j = 0; j < N; ++j)
{
if(a[j] > 0)
{
js[a[j]] = j;
}
// für j = 0: {0 => 0, 1 => 1, 2 => 2}
// für j = 1: {0 => 0, 1 => 0, 2 => 2}
// für j = 2: {0 => 0, 1 => 1, 2 => 0}
}
int k = 2 * s[js[1] - 1] + s[js[2] - 1];
System.out.println("neuer Status für " + j + ": " + v[k]);
}
}
}
Die Zeilen 16 und 17 können kompiliert werden. Die Zeile 31 (und auch Zeile 43) jedoch nicht. Das kann Java einfach nicht, oder? Oder schreibe ich das vielleicht nur irgendwie falsch hin?
Zuletzt bearbeitet: