Вот мой код Java (ужасный алгоритм грубой силы, который я знаю, и это требование). Я думаю, что я инициализировал переменную j
в цикле for перед любыми ссылками, однако, когда я запускаю предупреждения компилятора.Возможно, переменная не была инициализирована?
import java.util.Arrays;
public class Brute {
public static void main(String[] args) {
String filename = "./collinear/input" + args[0] + ".txt";
In f = new In(filename);
int N = f.readInt();
Point[] points = new Point[N];
int x, y;
StdDraw.setScale(-10000, 50000);
for(int i = 0; i < N; i++) {
x = f.readInt();
y = f.readInt();
points[i] = new Point(x, y);
points[i].draw();
}
Arrays.sort(points);
int i, j, k, l;
for(i = 0; i < N; i++)
for(j = 0; j < N; j++)
if(points[j] == points[i]) continue;
for(k = 0; k < N; k++)
if((points[k] == points[i]) || (points[k] == points[j])) continue;
for(l = 0; l < N; l++) {
if((points[l] == points[i]) || (points[l] == points[j])
|| (points[l] == points[k])) continue;
if(points[i].slopeTo(points[j]) == points[i].slopeTo(points[k])
&& points[i].slopeTo(points[k]) == points[i].slopeTo(points[l])) {
StdOut.println(points[i].toString()
+ " -> " + points[j].toString()
+ " -> " + points[k].toString()
+ " -> " + points[l].toString());
points[i].drawTo(points[l]);
}
}
}
}
Brute.java:31: error: variable j might not have been initialized
if((points[k] == points[i]) || (points[k] == points[j])) continue;
Brute.java:33: error: variable j might not have been initialized
if((points[l] == points[i]) || (points[l] == points[j])
Довольно глупая ошибка брекетов. – CoderNeji
Разве ваша IDE не предупреждает вас о подозрительных отступах? – fge