Salve ho iniziato a programmare la scorsa settimana, e ho prodotto questo codice:
import java.util.Random;
import java.util.Scanner;
import java.io.*;
import java.lang.Math;
public class Esercizio4
{
public static void main(String []args)
{
String path = "D:/Downloads/stazioni.txt";
Random random = new Random();
Scanner in = new Scanner(System.in);
System.out.println("leggere da file le stazioni? 1 si");
int i=0,j=0,collegamento,controllo=0,k=0,t=0;
int leggere= in.nextInt();
int[] arraytemp = new int[100];
String stringa="";
int partenza,arrivo;
String stazioni="";
int prob=0;
/*if(leggere ==1)
{
prob=1;
char[] testo = new char[50];
int size = 0;
String s="a";
char a = s.charAt(0);
try
{
File file = new File(path);
FileReader fr = new FileReader(file);
size = fr.read(testo);
System.out.print("Caratteri presenti: " + size + "\n");
for(i=0; i<size; i++)
{
StringBuilder sb = new StringBuilder();
for(j=i;testo[j]!=a;j++)
{
sb.append(testo[j]);
stringa = sb.toString();
}
i=j;
int val = Integer.parseInt(stringa);
arraytemp[k]=val;
k++;
}
fr.close();
}
catch(IOException e)
{
e.printStackTrace();
}
int[] distanze = new int[k];
int[] provenienze = new int[k];
boolean[] visitato = new boolean[k];
int radice = (int)Math.sqrt(k);
int[][] matrice = new int [radice][radice];
for(i=0;i<radice;i++)
for(j=0;j<radice;j++)
{
matrice[j]=arraytemp[t];
t++;
}
}
else
{
*/
System.out.println("inserisci numero stazioni");
int ns = in.nextInt();
int[][] matrice = new int [ns][ns];
int[] distanze = new int[ns];
int[] provenienze = new int[ns];
boolean[] visitato = new boolean[ns];
for(i=0;i<ns;i++)
{
for(j=0;j<ns;j++)
{
if(i!=j)
{
collegamento = random.nextInt(6);
if(collegamento!=0)
matrice[j]= collegamento;
else
matrice[j]=999;
System.out.println("posizione "+i +j + "valore "+matrice[j]);
}
else
{
matrice[j]=0;
System.out.println("posizione "+i +j + "valore "+matrice[j]);
}
}
}
try
{
File file = new File(path);
if (file.exists())
System.out.println("Il file " + path + " esiste");
else
if (file.createNewFile())
System.out.println("Il file " + path + " è stato creato");
else
System.out.println("Il file " + path + " non può essere creato");
}
catch (IOException e)
{
e.printStackTrace();
}
for(i=0;i<ns;i++)
for(j=0;j<ns;j++)
stazioni = stazioni+matrice[j]+"a";
System.out.println("Salvare le stazioni su file 1= si?");
int decisione= in.nextInt();
if (decisione==1)
{
try
{
File file = new File(path);
FileWriter fw = new FileWriter(file);
fw.write(stazioni);
fw.flush();
fw.close();
System.out.println("Il file stazioni è stato salvato");
}
catch(IOException e)
{
e.printStackTrace();
}
}
//}
System.out.println("Inserisci fermata di partenza");
partenza= in.nextInt();
while(partenza>=ns)
{
System.out.println(" Partenza non valida Inserisci fermata di partenza");
partenza= in.nextInt();
}
System.out.println("Inserisci fermata di Arrivo");
arrivo= in.nextInt();
while(arrivo>=ns)
{
System.out.println(" arrivo non valido Inserisci fermata di partenza");
arrivo= in.nextInt();
}
while (arrivo==partenza)
while (arrivo==partenza)
{
System.out.println("arrivo= partenza Inserisci di nuovo fermata di Arrivo");
arrivo= in.nextInt();
}
for (i=0; i<ns; i++)
{
distanze = 100;
provenienze = -1;
visitato = false;
}
int nodoAttuale, minDistanza;
nodoAttuale = partenza;
distanze[partenza] = minDistanza = 0;
while (nodoAttuale != arrivo && minDistanza != 100)
{
minDistanza = 100;
for (j=0; j<ns; j++)
if (!visitato[j] && distanze[j] < minDistanza)
{
minDistanza = distanze[j];
nodoAttuale = j;
}
visitato[nodoAttuale] = true;
for (j=0; j<ns; j++)
{
if (matrice[nodoAttuale][j] != 100 && distanze[j] > distanze[nodoAttuale] + matrice[nodoAttuale][j])
{
distanze[j] = distanze[nodoAttuale] + matrice[nodoAttuale][j];
provenienze[j] = nodoAttuale;
}
}
}
for(i=0;i<ns;i++)
System.out.println(visitato[i]+" ");
if(!visitato[arrivo])
System.out.println("Non esiste collegamento");
else
{
System.out.println("Ci mette "+ distanze[arrivo]+ "minuti");
i = arrivo;
System.out.println("percorso a ritroso: ");
while (i != partenza)
{
System.out.println("Stazione toccata: "+i);
i = provenienze[i];
}
System.out.println("Stazione toccata: "+i);
}
}
}
non capisco perchè se tolgo la parte commenta, alla compilazione di ma il problema che"
int ns = in.nextInt();
int[][] matrice = new int [ns][ns];
int[] distanze = new int[ns];
int[] provenienze = new int[ns];
boolean[] visitato = new boolean[ns];"non sono dichiarate.
In realtà io le dichiaro con dimensione diversa in in tutte e due le diramazioni del if....quindi non ha senso il fatto che successivamente dica che non è dichiarato. Qualcuno mi aiuta?