Elrond89
04-03-2009, 19:40
Ho compilato questo programma, chiamato gioco della vita su xcode
import java.util.*;
public class GiocoDellaVita {
public static void main (String args[]) {
Scanner s= new Scanner (System.in);
System.out.print("Quante righe?");
int n= s.nextInt();
System.out.print("Quante colonne?");
int m= s.nextInt();
char [][]mappa= new char [n][m];
leggiConfigurazione(mappa);
System.out.print ("Quante generazioni?");
int g= s.nextInt();
for (int i=0; i<g; i++) {
char [][] nuovaGen= prossimaGenerazione(mappa);
stampaRigheMatrice (nuovaGen);
mappa=nuovaGen;
}// for
}// main
public static void stampaRigheMatrice(char[][] A) {
for (int i=0; i<A.length; i++) { // scandisce righe
for (int j=0; j<A[0].length; j++) // scandisce elementi riga i
System.out.print(A[i][j]+" "); // stampa elemento riga
System.out.println(); // fine riga
}
}//fine metodo
static char[][] prossimaGenerazione (char [][]a){
char b[][]= new char [a.length][a[0].length];
for (int i=0; i<b.length; i++)
for (int j=0; j<b[0].length; j++){
int v= vicini(a,i,j);
if (a[i][j]=='*')
b[i][j]= (v==2 || v==3) ? '*': '.';
else
b[i][j]= (v==3) ?'*': '.';
}// for
return b;
}//metodo
static int vicini (char[][]a, int i, int j) {
int cv=0;// conta i vicini
if (i>0 && a[i-1][j]=='*') cv++;//nord
if (i>0 && j<a[0].length-1 && a[i-1][j+1]=='*') cv++;
if (j>a[0].length-1 && a[i][j+1]== '*') cv++;
if (i<a.length-1 && j<a[0].length-1 && a[i+1][j+1]=='*') cv++;
if (i<a.length-1 && a[i+1][j]=='*') cv++;
if (i<a.length-1 && j>0 && a[i+1][j-1]=='*') cv++;
if (j>0 && a[i][j-1]=='*') cv++;
if (i>0 && j>0 && a[i-1][j-1]=='*') cv++;
return cv;
}// vicini
static void leggiConfigurazione (char[][]a) {
Scanner b= new Scanner (System.in);
String line= null;
for (int i=0; i<a.length; i++) {
line=b.nextLine();
if (line.length()!=a[0].length) {
System.out.println("Lunghezza della linea scorretta");
System.exit(-1);
}// fine
for (int j=0; j<a[0].length; j++)
a[i][j]=line.charAt(j);
}// fine for
} //fine leggiConfigurazione
}
E Xocde mi da il seguente errore quando cerco di eseguirlo:
[Session started at 2009-03-04 18:56:40 +0100.]
Picked up _JAVA_OPTIONS: -Xdebug -Xnoagent -Xrunjdwp:transport=dt_local,server=y,address=8000
Listening for transport dt_local at address: 8000
Quante righe?JavaBug>
Non mi era mai capitato che mi desse un errore del genere e non riesco a capire cos'abbia.
Ho dato il mio codice a un mio amico che usa Textpad e sul suo computer funzionava perfettamente, quindi credo che il codice sia corretto ma c'è qualcosa che non va in Xcode.
Qualcuno può aiutarmi? Inoltre potete consigliarmi dei metodi alternativi per compilare in java su Mac (magari direttamente da Terminale)
import java.util.*;
public class GiocoDellaVita {
public static void main (String args[]) {
Scanner s= new Scanner (System.in);
System.out.print("Quante righe?");
int n= s.nextInt();
System.out.print("Quante colonne?");
int m= s.nextInt();
char [][]mappa= new char [n][m];
leggiConfigurazione(mappa);
System.out.print ("Quante generazioni?");
int g= s.nextInt();
for (int i=0; i<g; i++) {
char [][] nuovaGen= prossimaGenerazione(mappa);
stampaRigheMatrice (nuovaGen);
mappa=nuovaGen;
}// for
}// main
public static void stampaRigheMatrice(char[][] A) {
for (int i=0; i<A.length; i++) { // scandisce righe
for (int j=0; j<A[0].length; j++) // scandisce elementi riga i
System.out.print(A[i][j]+" "); // stampa elemento riga
System.out.println(); // fine riga
}
}//fine metodo
static char[][] prossimaGenerazione (char [][]a){
char b[][]= new char [a.length][a[0].length];
for (int i=0; i<b.length; i++)
for (int j=0; j<b[0].length; j++){
int v= vicini(a,i,j);
if (a[i][j]=='*')
b[i][j]= (v==2 || v==3) ? '*': '.';
else
b[i][j]= (v==3) ?'*': '.';
}// for
return b;
}//metodo
static int vicini (char[][]a, int i, int j) {
int cv=0;// conta i vicini
if (i>0 && a[i-1][j]=='*') cv++;//nord
if (i>0 && j<a[0].length-1 && a[i-1][j+1]=='*') cv++;
if (j>a[0].length-1 && a[i][j+1]== '*') cv++;
if (i<a.length-1 && j<a[0].length-1 && a[i+1][j+1]=='*') cv++;
if (i<a.length-1 && a[i+1][j]=='*') cv++;
if (i<a.length-1 && j>0 && a[i+1][j-1]=='*') cv++;
if (j>0 && a[i][j-1]=='*') cv++;
if (i>0 && j>0 && a[i-1][j-1]=='*') cv++;
return cv;
}// vicini
static void leggiConfigurazione (char[][]a) {
Scanner b= new Scanner (System.in);
String line= null;
for (int i=0; i<a.length; i++) {
line=b.nextLine();
if (line.length()!=a[0].length) {
System.out.println("Lunghezza della linea scorretta");
System.exit(-1);
}// fine
for (int j=0; j<a[0].length; j++)
a[i][j]=line.charAt(j);
}// fine for
} //fine leggiConfigurazione
}
E Xocde mi da il seguente errore quando cerco di eseguirlo:
[Session started at 2009-03-04 18:56:40 +0100.]
Picked up _JAVA_OPTIONS: -Xdebug -Xnoagent -Xrunjdwp:transport=dt_local,server=y,address=8000
Listening for transport dt_local at address: 8000
Quante righe?JavaBug>
Non mi era mai capitato che mi desse un errore del genere e non riesco a capire cos'abbia.
Ho dato il mio codice a un mio amico che usa Textpad e sul suo computer funzionava perfettamente, quindi credo che il codice sia corretto ma c'è qualcosa che non va in Xcode.
Qualcuno può aiutarmi? Inoltre potete consigliarmi dei metodi alternativi per compilare in java su Mac (magari direttamente da Terminale)