1 Attachment(s)
Null error when executing in cmd prompt
Hello,
I'm working on a school project but there's one tiny thing that's bugging me.
I think the error is around the public char GokMedeklinker and public String vervangen.
Here's my code and the null error I'm getting!
Code Java:
/**
*
* @version 19 november 2012
* @Project 2: RadVanFortuin
*/
public class RadVanFortuin {
int bedragRad,rad,keuze,draai,aantalWoorden,plaatsCat,bedragSpeler,beurten,plaats,totaal; // declaratie variabelen
String sterWoord3,teRadenWoord2;
boolean bankroet = false;
boolean geraden = false;
boolean gokken = true;
boolean categorieKeuze = false;
boolean inTabel = false;
boolean quit = false;
boolean gameOver = false;
String sterWoord2,teRadenWoord,gok;
final int CATEGORIES = WoordIO2.aantalCategories("woorden.txt");
final int AANTALWOORDEN = WoordIO2.aantalWoorden("woorden.txt");
final String[][] TERADENWOORDEN = vulWoorden("woorden.txt");
int[] spelersLijst = new int[aantal()];
String categorie;
String[] Extra = new String [AANTALWOORDEN];
public int aantal() {
String hoeveelheid;
int spelers;
do {
System.out.println("=== Het Rad van Fortuin ===\n\nMet hoeveel willen jullie spelen?");
spelers = Input.readInt();
} while (spelers > 100);
return spelers;
}
public String[][]vulWoorden(String bestand) {
String[][] teRadenWoorden = new String[CATEGORIES][AANTALWOORDEN+1];
String[] lijnen = WoordIO2.geefLijnen("woorden.txt");
for (int i = 0; i < lijnen.length; i++) {
inTabel = false;
for (int i3 = 0; i3 < CATEGORIES; i3++) {
if ((lijnen[i].substring(0,lijnen[i].indexOf('-'))).equals(teRadenWoorden[i3][0])) {
inTabel = true;
}
}
if (inTabel == false) {
teRadenWoorden[plaatsCat][0] = lijnen[i].substring(0,lijnen[i].indexOf('-'));
Extra = geefWoordenUitCategorie(lijnen, teRadenWoorden[plaatsCat][0]);
for (int teller = 1; teller < AANTALWOORDEN + 1; teller++) {
teRadenWoorden[plaatsCat][teller] = Extra[teller-1];
}
plaatsCat++;
}
}
return teRadenWoorden;
}
public String[] geefWoordenUitCategorie(String[] lijnenVanFile, String categorie) {
int telWoorden = 0;
String[] aantalWoordenInFile = new String[AANTALWOORDEN];
for (int i = 0; i < lijnenVanFile.length;i++) {
if ((lijnenVanFile[i].substring(0,lijnenVanFile[i].indexOf('-'))).equals(categorie)) {
aantalWoordenInFile[telWoorden] = lijnenVanFile[i].substring(lijnenVanFile[i].indexOf('-')+1);
telWoorden++;
}
}
return aantalWoordenInFile;
}
public void start() {
char medeklinker;
int aantalGeraden;
String echtTeRadenWoord;
String echtSterWoord;
do {
if(starten() == true) {
gameOver = false;
echtTeRadenWoord = genereerWoord(keuzeOnderwerp()).toLowerCase();
echtSterWoord = sterren(echtTeRadenWoord);
for (int verloop = 1; verloop <= 10 ; verloop ++) {
if (gameOver == true) {
break;
}
for (int participant = 1 ; participant < spelersLijst.length + 1; participant++) {
if(draaien(participant) == true) {
totaal = radStop(draaiRad());
if (totaal > 0) {
medeklinker = gokMedeklinker();
aantalGeraden = gokControle(echtSterWoord,echtTeRadenWoord,medeklinker);
echtSterWoord = vervangen(echtSterWoord,echtTeRadenWoord,medeklinker);
totaal = cash (aantalGeraden,totaal);
if (aantalGeraden > 0) {
if (gokWoord(verloop,totaal,echtTeRadenWoord) == true) {
einde (participant,totaal);
gameOver = true;
break;
}
}
}
} else {
gameOver = true;
break;
}
}
}
} else {
quit = true;
}
} while (gameOver == false);
}
public boolean starten (){
boolean begin = true;
do {
System.out.println("=== Het Rad van Fortuin ===\n\nWat wil je doen?\n\n1) Een nieuw spel starten\n2) Het programma stoppen\n\nKeuze:");
keuze = Input.readInt();
if (keuze == 1) {
begin = true;
}
if (keuze == 2) {
begin = false;
}
} while (keuze !=1 && keuze != 2);
return begin;
}
public String keuzeOnderwerp() {
System.out.print("De mogelijke categorieen zijn: ");
for (int i = 0 ; i < CATEGORIES; i++) {
System.out.print(TERADENWOORDEN[i][0] + ",");
}
do {
System.out.println("\nGeef een categorie:\n");
categorie = Input.readString();
for ( int i = 0 ; i < CATEGORIES; i++) {
if(categorie.equals(TERADENWOORDEN[i][0])){
categorieKeuze = true;
}
}
} while (categorieKeuze == false);
return categorie;
}
public String genereerWoord (String categorie) {
int random = (int)(Math.random()* AANTALWOORDEN) + 1;
for (int i = 0; i < CATEGORIES ; i++) {
if (TERADENWOORDEN[i][0].equals(categorie)){
plaats = i;
}
}
System.out.println("We zoeken een woord van het type: "+ categorie +"\nHet te raden woord heeft de volgende vorm:");
return TERADENWOORDEN[plaats][random];
}
public String sterren (String teRadenWoord) {
String sterWoord = new String ();
for (int i = 0; i < teRadenWoord.length(); i++) { //woord omzetten naar sterren
if (teRadenWoord.charAt(i) == ' ') {
sterWoord = sterWoord + ' ';
} else {
sterWoord = sterWoord + '*';
}
}
System.out.println(sterWoord);
return sterWoord;
}
public boolean draaien (int participant) {
boolean begin = false;
do {
System.out.println("SPELER " + participant + "\nWat wil je doen?\n\n1) Aan het rad draaien\n2) Dit spel stoppen\n\nKeuze:"); //keuze
draai = Input.readInt();
if (draai == 1) {
begin = true;
}
if (draai == 2) {
begin = false;
}
} while (draai != 1 && draai != 2);
return begin;
}
public int draaiRad() { //het bedrag waar het rad op stopt wordt in een variabele gestoken
rad = (int) (5 * Math.random());
System.out.println("Het rad wordt gedraaid: \n");
switch (rad) {
case 0:
bedragRad = 2000;
break;
case 1:
bedragRad = 4000;
break;
case 2:
bedragRad = 10000;
break;
case 3:
bedragRad = 100000;
break;
case 4:
bedragRad = 0;
break;
}
return bedragRad;
}
public int radStop (int bedragRad) {
if(bedragRad == 0) {
System.out.println("\nHet rad stopt op bankroet");
} else {
System.out.println("\nHet rad stopt op: " + bedragRad+ " euro");
}
return bedragRad;
}
public char gokMedeklinker() { //de medeklinker wordt geraden en de medeklinker wordt in het sterrenwoord gestoken
char medeklinker;
String letter = "";
do {
System.out.println("U mag een medeklinker gokken:");
letter = Input.readString();
medeklinker = letter.charAt(0);
} while(letter.length() !=1 || letter.equals("a") || letter.equals("e") || letter.equals("o") || letter.equals("u") || letter.equals("i"));
return medeklinker;
}
public int gokControle(String sterWoord, String teRadenWoord, char gokMedeklinker) {
int aantal = 0;
if (sterWoord.indexOf(gokMedeklinker) >=0) {
System.out.println("Deze medeklinker werd al geraden");
aantal = 0;
} else {
for (int i = 0; i < teRadenWoord.length(); i++) {
if(teRadenWoord.charAt(i) == gokMedeklinker) {
aantal++;
}
}
}
System.out.println("Deze letter komt " + aantal + " keer voor in het woord.");
return aantal;
}
public String vervangen (String sterWoord, String teRadenWoord, char letter) {
for (int i = 0; i < sterWoord.length() ; i++) {
if (teRadenWoord.charAt(i) == letter) {
if (sterWoord.charAt(i) == letter) {
sterWoord2 = sterWoord2 + sterWoord.charAt(i);
} else {
sterWoord2 = sterWoord2 + letter;
}
} else {
sterWoord2 = sterWoord2 + sterWoord.charAt(i);
}
}
System.out.println(sterWoord2);
return sterWoord2;
}
public int cash (int aantal, int geldBedrag) {
bedragSpeler = bedragSpeler + (aantal * bedragRad);
System.out.println("U heeft " + bedragSpeler + " euro in de kassa \n");
return bedragSpeler;
}
public boolean gokWoord(int beurten, int geldbedrag, String teRadenWoord) { //de gok wordt vergeleken met het te raden woord
System.out.println("U mag nu een gok wagen:");
gok = Input.readLine().toLowerCase();
if (gok.equals(teRadenWoord)) {
System.out.println("\n --- PROFICIAT --- \n U heeft het woord in " + beurten + " beurten geraden! \n U heeft " + bedragSpeler + " euro gewonnen\n");
geraden = true;
} else {
System.out.println("Spijtig, " + gok + " is niet juist");
geraden = false;
}
return geraden;
}
public void einde (int participant, int bedragSpeler) {
System.out.println("\nOverzicht van de scores:\n");
spelersLijst[participant-1] = spelersLijst[participant-1]+ bedragSpeler;
for (int i = 1; i < spelersLijst.length + 1; i++) {
System.out.println("Speler" + i + " = " + spelersLijst[i-1]);
}
}
public static void main(String[] args) { //oproepen van de methode
RadVanFortuin controle = new RadVanFortuin();
controle.start();
}
}
Attachment 1685
thanks in advance,
greetz,
Nasty x
Re: Null error when executing in cmd prompt
Please copy the full text of the command prompt window and paste it here.
To copy the contents of the command prompt window:
Click on Icon in upper left corner
Select Edit
Select 'Select All' - The selection will show
Click in upper left again
Select Edit and click 'Copy'
Paste here.
Look at the line where the error is happening, find the variable with the null value and then backtrack in the code to find why it does not have a valid value.
1 Attachment(s)
Re: Null error when executing in cmd prompt
That's the problem, it doesn't say anything at all, it just keeps running the program untill I stop running it!
proof: Attachment 1686
=== Het Rad van Fortuin ===
Met hoeveel willen jullie spelen?
1
=== Het Rad van Fortuin ===
Wat wil je doen?
1) Een nieuw spel starten
2) Het programma stoppen
Keuze:
1
De mogelijke categorieen zijn: boek,film,ac
Geef een categorie:
boek
We zoeken een woord van het type: boek
Het te raden woord heeft de volgende vorm:
****** ****
SPELER 1
Wat wil je doen?
1) Aan het rad draaien
2) Dit spel stoppen
Keuze:
1
Het rad wordt gedraaid:
Het rad stopt op: 4000 euro
U mag een medeklinker gokken:
j
Deze letter komt 1 keer voor in het woord.
nullj***** ****
U heeft 4000 euro in de kassa
U mag nu een gok wagen:
jungle book
--- PROFICIAT ---
U heeft het woord in 1 beurten geraden!
U heeft 4000 euro gewonnen
Overzicht van de scores:
Speler1 = 4000
Druk op een toets om door te gaan. . .
Re: Null error when executing in cmd prompt
Where is that line printed? What variable has the null value?
Re: Null error when executing in cmd prompt
Code Java:
public String vervangen (String sterWoord, String teRadenWoord, char letter) {
for (int i = 0; i < sterWoord.length() ; i++) {
if (teRadenWoord.charAt(i) == letter) {
if (sterWoord.charAt(i) == letter) {
sterWoord2 += sterWoord.charAt(i);
} else {
sterWoord2 += letter;
}
} else {
sterWoord2 += sterWoord.charAt(i);
}
}
System.out.println(sterWoord2);
return sterWoord2;
}
This should give the word in ******** with the guessed consonant.
Re: Null error when executing in cmd prompt
What variable has a null value? Why doesn't it have a valid value?
Re: Null error when executing in cmd prompt
Quote:
Originally Posted by
Norm
What variable has a null value? Why doesn't it have a valid value?
Actually you got me thinking there!
I've placed the sterWoord2 variable that I've declared in the public class in the public String vervangen.
And the null disappeared after executing it! Such a small thing
Nevertheless, it is SOLVED, thanks for the help!
greets,
Nasty
Re: Null error when executing in cmd prompt
Please mark this thread as solved.