Also die erste Sache, die ich klarstellen möchte, ist, dass ich denke, dass dies mein Fehler ist, den ich gerade nicht sehe, aber ich dachte, es könnte helfen, die IDE zu kennen ist IntelliJ. Ich habe auch andere Überlauf Beiträge (question 1, final keyword, question 2, um ein paar zu nennen), aber sie haben meine Frage nicht beantwortet, soweit ich das beurteilen kann. Ich hatte nur AP Informatik als meine Ausbildung in CS, so dass mein Wissen sehr begrenzt ist.IntelliJ-Variable wurde möglicherweise nicht initialisiert
Das Problem tritt mit einer nicht öffentlichen Klasse in einer Datei auf. Es erstellt einen Pfad durch ein 2D-Array und kann Instanzen von sich selbst für einen Verzweigungseffekt erstellen, muss dies aber nicht tun. Außerdem werden mehrere Versionen davon von der öffentlichen Klasse in der Datei erstellt. Unten ist mein Code (die Teile, die ich für relevant halte. Wenn du mehr brauchst, lass es mich wissen und ich werde meine Frage aktualisieren). Lassen Sie mich wissen, wenn Sie noch etwas brauchen, und danke, dass Sie mir geholfen haben!
public class PathMaker
{
....
}
class RiverPath
{
private final int startID;
private final int endID;
private final double branchChance;
private final double endFactor;
public RiverPath(int x, int y, int[][] alts, double bChance, int c, double eFactor, int pX, int pY)
{
startID = MapNode.createID(x, y);
branchChance = bChance;
endFactor = eFactor;
...
endID = a number;
}
public RiverPath(int x, int y, int[][] alts, double bChance)
{
this(x, y, alts, bChance, 0, .02, -1, -1);
}
...
}
Es gibt keine anderen Konstrukteuren, und MapNode
ist eine andere Klasse mit dem public static int createID(int x, int y)
Methode.
Lassen Sie mich wissen, was ich tun muss, um meine Frage klarer zu machen.
EDIT: Alle vier Variablen geben mir Kummer. Außerdem werde ich den vollständigen Konstruktor unten setzen. Soweit ich sehen kann, gibt es keine return
Erklärung in meinem Code. Außerdem ist der Fehler, bevor ich kompilieren und sagt
Variable [name] möglicherweise nicht
initialisiert
Diese 4 Fehler sind die Einzigen. Es gibt einige Variablen, die außerhalb des Konstruktors definiert sind.
public RiverPath(int x, int y, int[][] alts, double bChance, int c, double eFactor, int pX, int pY)
{
count = c;
if(c > 0)
isBranch = true;
else
isBranch = false;//pX and pY only matter if is Branch
startID = MapNode.createID(x, y);
branchChance = bChance;
altitudes = alts;
endFactor = eFactor;
mainPath.add(new MapNode(x, y, altitudes));
boolean pathing = true;
MapNode currentNode = mainPath.get(0);
int[][] heights = new int[3][3];//heights around river
boolean[][] heightTight = new boolean[3][3];
int min;
int minCount;
int tID;
RiverPath branch;
while(pathing)
{
if(Math.random() < endFactor*count)
{
pathing = false;
}
else
{
count++;
min = 99;
minCount = 0;
for(int i = -1; i < 2; i++)
{//These loops fill heights with the nearby heights of mapnodes and set min as the min
for(int z = -1; z < 2; z++)
{
heights[i+1][z+1] = altitudes[currentNode.getY() + i][currentNode.getX() + z];
if(heights[i+1][z+1] < min)
{
min = heights[i + 1][z + 1];
}
}
}
if(min == currentNode.getAltitude())
{
min = 0;
for(int i = -1; i < 2; i++)
{
for(int z = -1; z < 2; z++)
{
tID = MapNode.createID(currentNode.getX() + z, currentNode.getY() + i);
if(heights[i+1][z+1] == currentNode.getAltitude() && (!isBranch || !(MapNode.createID(pX, pY) == tID)) && (mainPath.size() == 1 || mainPath.get(mainPath.size() - 1).getID() != tID))
{//if the altitude is the min, and it either isn't a branch or it isn't the node before this one
heightTight[currentNode.getY()+i][currentNode.getX()+z] = true;//a possible path exists here
min++;//min now keeps track of the total number of possible paths there are
minCount++;//also keeps track of total, but for a different implementation later
}
}
}
while(min != 0)
{
if(min == -1)
min = -2;//signals that we can test branches
for (int i = -1; i < 2; i++)
{
for (int z = -1; z < 2; z++)
{
if (min > 0 && heightTight[currentNode.getY() + i][currentNode.getX() + z] && Math.random() < 1.0/)//
{
if(min > 0)
min = -1;//signals that we can skip all other true values, but ONLY if there are more possible branches
else
min = 0;//in case we lower min below 0
}
else if(min == -2 && heightTight[currentNode.getY() + i][currentNode.getX() + z] && Math.random() < branchChance)//both random chance and it is a possible path
{
branch = new RiverPath(currentNode.getX() + z, currentNode.getY() + i, altitudes, branchChance, count, endFactor, currentNode.getX(), currentNode.getY());
branches.add(branch);
}
}
}
}
}
}
}
endID = currentNode.getID();
}
Das Teilen eines [MCVE] (https://stackoverflow.com/help/mcve) ist sehr hilfreich für diese Art von Fragen; Wenn Sie einen Teil des Codes weglassen, der Ihre Probleme verursacht, ist es schwierig, das Problem zu diagnostizieren. – dimo414
Welche Variable ?? –
Fehlend: die Fehlermeldung! – GhostCat