Вопрос

This code is not done yet, but I'm keep getting the problem where the txt file (cpu.txt) becomes "null" in the output, does anyone know where I did wrong? Thanks.

This is the output:

--------------------Configuration: --------------------

BINGO CALL IS: G50

PLAYER CARDS:
  B   I   N   G   O           B   I   N   G   O
1   21  38  58  68  
5   29  31  51  73  
15  20  F   59  67  
4   30  39  53  74  
11  28  33  48  69  
7   30  32  49  69  
8   27  35  58  63  
3   17  F   57  68  
11  18  45  52  71  
12  16  33  54  70  

CPU CARDS:
  B   I   N   G   O           B   I   N   G   O
null    null    null    null    null    
null    null    null    null    null    
null    null    null    null    null    
null    null    null    null    null    
null    null    null    null    null    
null    null    null    null    null    
null    null    null    null    null    
null    null    null    null    null    
null    null    null    null    null    
null    null    null    null    null    


B   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  
I   16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  
N   31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  
G   46  47  48  49  *   51  52  53  54  55  56  57  58  59  60  
O   61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  

current points available: 0 point. 1. Daub board 2. Call Bingo! 3. Use bonus (1000 points) 4. Next call

    import java.util.Random;
    import java.io.*;
    import java.util.Scanner;

    public class Bingo_D {

    public static void callBoard(int[] un, int turns) {


            int t = 1;
            int i = 1;

            int[] bingo = new int[76];
            System.out.print("B" + "\t");
            String star= "nothing";
            for ( i=1; i < bingo.length; i++){

                bingo[i] = i;

                for (t = 1; t < un.length; t++){
                if(un[t] == bingo[i]){ //un = call, bingo = board
                star = Integer.toString(bingo[i]);
                star = "*"; 
                System.out.print(star + "\t");
                break;
                } else if (t == i){
                System.out.print(bingo[i] + "\t");
                    } 
                }
                if (bingo[i] % 15 == 0 ){
                System.out.println();

                } if (bingo[i] == 15) {
                System.out.print("I" + "\t");
                } if (bingo[i] == 30) {
                System.out.print("N" + "\t");
                } if (bingo[i] == 45) {
                System.out.print("G" + "\t");
                } if (bingo[i] == 60) {
                System.out.print("O" + "\t");
                }
            }
        }    
              public static String randomCall(){
              Random object = new Random();
              int number = 1+object.nextInt(75); 

              if (number > 0 && number < 16 ){
              System.out.print("B" + number );
              } else if ( number > 15 && number < 31){
              System.out.print("I" + number );
              } else if ( number > 30 && number < 46){
              System.out.print("N" + number );
              } else if ( number > 45 && number < 61){
              System.out.print("G" + number );
              } else {
              System.out.print("O" + number );
              } 
              String real = Integer.toString(number);
              return real;
         }

           public static boolean checkWinner(String[] check){
           int b = 1;
           int i = 6;
           int n = 11;
           int g = 16;
           int o = 21;
           //vertical victory
           while(true){
           if (n == 13 && check[b].equals("*") && check[i].equals("*") && check[n].equals("F") && check[g].equals("*") && check[o].equals("*")|| 
               n == 38 && check[b].equals("*") && check[i].equals("*") && check[n].equals("F") && check[g].equals("*") && check[o].equals("*")){
           return true;
         } else if (check[b].equals("*") && check[i].equals("*") && check[n].equals("*") && check[g].equals("*") && check[o].equals("*")){
              return true;
               } else {
           if(b < 5 || b > 25 && b < 30) {
              b++; i++; n++; g++; o++;
             }else if( b == 5) {
              b+=21; i+=21; n+=21; g+=21; o+=21;
             } else {
             break;
                }
            }
        }
        //horizontal victory
        int m = 1;
        int p = 2;
        int x = 3;
        int u = 4;
        int w = 5;
     while (true){
      if (x == 13 && check[m].equals("*") && check[p].equals("*") && check[x].equals("F") && check[u].equals("*") && check[w].equals("*")|| 
          x == 38 && check[m].equals("*") && check[p].equals("*") && check[x].equals("F") && check[u].equals("*") && check[w].equals("*")){
        return true;
      } else if (check[m].equals("*") && check[p].equals("*") && check[x].equals("*") && check[u].equals("*") && check[w].equals("*")){
        return true;
      } else if (m < 46){
        m+=5; p+=5; x+=5; u+=5; w+=5;
      } else {
        break;
      }
  } //diagonal victory
          if (check[1].equals("*") && check[7].equals("*") && check[13].equals("F") && check[19].equals("*") && check[25].equals("*")||
              check[5].equals("*") && check[9].equals("*") && check[13].equals("F") && check[17].equals("*") && check[21].equals("*")||
              check[26].equals("*") && check[32].equals("*") && check[38].equals("F") && check[44].equals("*") && check[50].equals("*")||   
              check[30].equals("*") && check[34].equals("*") && check[38].equals("F") && check[42].equals("*") && check[46].equals("*")){
              return true;

              } else 
              return false;
          }  


            public static void main(String[] args)throws FileNotFoundException{

            int [] stars = new int[51];
            int [] starstwo = new int[51];
            int e = 0;
            String[] b = new String[51];
            String[] btwo = new String[51];
            int tob = 1;
            int i = 0;
            int itwo = 0;
            int cou = 1;
            int coutwo = 1;
            String star = "";
            String startwo = "";



            int totalBonus = 0;
            int bon =0;
            int secondChoice = 0;
            int thirdChoice = 0;

            for( int turns = 1; turns < 200; turns++){

            System.out.print("BINGO CALL IS: ");
            String replace = randomCall();
            int[] call = new int[76];
            int randomNum = Integer.parseInt(replace);
            call[turns] = randomNum;

            System.out.println();
            System.out.println();

                File player = new File("player.txt");
                Scanner second = new Scanner(player); 
                System.out.println("PLAYER CARDS:");
                //Reformatting the txt file
                System.out.format("%3s%4s%4s%4s%4s\t\t\t%3s%4s%4s%4s%4s%n", "B", "I", "N", "G", "O", "B", "I", "N", "G", "O");
                for (i= 1; i < 51; i++){
                for( cou = 1; cou < 51; cou++){
                if ( i == stars[cou]){
                b[i] = second.next();
                b[i] = "*";
                star = "*";
                System.out.printf("%4s", star + "\t");
                }
            }  
                if ( !star.equals("*")){
                b[i] = second.next();
                System.out.printf("%s", b[i] + "\t");
                }   
                if(star.equals("*")){
                star = "nothing";
                }
                 if(i == bon && !b[i].equals("*")){
                b[i]= second.next();
                b[i]= "F";
                System.out.printf("%s","F" + "\t");
            }
                 if(i % 5 == 0) {
                System.out.println();
                } 
            }   

                System.out.println();

                File cpuu = new File("cpu.txt");
                Scanner secondtwo = new Scanner(cpuu); 
                System.out.println("CPU CARDS:");
                //Reformatting the txt file
                System.out.format("%3s%4s%4s%4s%4s\t\t\t%3s%4s%4s%4s%4s%n", "B", "I", "N", "G", "O", "B", "I", "N", "G", "O");
                for (itwo= 1; itwo < 51; itwo++){
                for( coutwo = 1; coutwo < 51; coutwo++){
                if ( itwo == starstwo[coutwo]){
                btwo[itwo] = secondtwo.next();
                btwo[itwo] = "*";
                startwo = "*";
                System.out.printf("%4s", startwo + "\t");
                }
            }  
                if ( !startwo.equals("*")){
                btwo[itwo] = secondtwo.next();
                System.out.printf("%s", btwo[itwo] + "\t");
                }   
                if(startwo.equals("*")){
                startwo = "nothing";
                }
                 if(itwo == bon && !b[i].equals("*")){
                btwo[itwo] = second.next();
                btwo[itwo] = "F";
                System.out.printf("%s","F" + "\t");
            }
                 if(itwo % 5 == 0) {
                System.out.println();
                } 
            }   

            System.out.println();
            System.out.println();
            callBoard(call,turns);
            System.out.println();
            System.out.println("current points available: " + totalBonus + " point." );
            System.out.println("     1. Daub board");
            System.out.println("     2. Call Bingo!"); 
            System.out.println("     3. Use bonus (1000 points)");
            System.out.println("     4. Next call");
            Scanner input = new Scanner(System.in);
            long var = System.currentTimeMillis() / 1000;
            int choice = input.nextInt();

            if(choice == 1){
            long varl = System.currentTimeMillis() / 1000;


            if (varl - var <= 3){
            int bonus = 400;
            for ( e = 1; e < 51; e++){
            if ( replace.equals(b[e])){
            totalBonus+=bonus;
            System.out.println("you daubed " + replace + " on your board(s), " + bonus + " points earned.");
            stars[tob]=e;
            tob++;
            break;
            }else if(e==50){
             int penalty = 500;
             totalBonus-=penalty;
             System.out.println("You do not have "+ replace + " on your board(s), 500 points penalty");
            }
        }

        } else if(varl - var == 4) {
            int smallBonus = 200;
            for ( e = 1; e < 51; e++){
            if ( replace.equals(b[e])){
            totalBonus+=smallBonus;
            System.out.println("you daubed " + replace + " on your board(s), " + smallBonus + " points earned.");
            stars[tob]=e;
            tob++;
            break;
            }else if(e==50){
             int penalty = 500;
             totalBonus-=penalty;
             System.out.println("You do not have "+ replace + " on your board(s), 500 points penalty");
            }
        }

            }else{
            for ( e = 1; e < 51; e++){
            if ( replace.equals(b[e])){
            System.out.println("you daubed " + replace + " on your board(s).");
            stars[tob]=e;
            tob++;
            break;
            }else if(e==50){
             int penalty = 500;
             totalBonus-=penalty;
             System.out.println("You do not have "+ replace + " on your board(s), 500 points penalty");
                        }
                    }
                }
              secondChoice = input.nextInt(); 
          if (secondChoice == 2){
          if (checkWinner(b) == true){
            System.out.println("BINGO! congratulation, you have won!");
            System.exit(0);
                } else {
            System.out.println("CHEATER! you lose!");   
            System.exit(0);
                }
            }

            if(secondChoice == 3){

            if( totalBonus >= 1000 ){
           Random object = new Random();
             bon = 1+object.nextInt(50); 
             for(int w = 0; w < 10; w++){
             if( b[bon].equals("*")){
            bon = 1+object.nextInt(50);
                 }
             } System.out.println("Bonus daubs at " + b[bon]);
            if (!b[bon].equals("*")) {
            System.out.println("Bonus daubs at " + b[bon]);
            }
        } else {
        System.out.println("Not enough Bonus points.");
         }
         thirdChoice = input.nextInt();
    }      

            if (secondChoice == 4 || thirdChoice == 4){
         for ( k = 1; k < 51; k++){
            if ( replace.equals(starsCpu[k])){
             System.out.println("The computer daubed " + starsCpu[k]);
            starsCpu[com] = k;      
                com++;
                    if (checkWinner(a) == true){
                    System.out.println("BINGO! , computer has won!");
                    }
                    }else if (k == 50){
                    System.out.println("The computer do not have " + replace);
                    }
                }
            }
        }//end of first choice    
        }
    }
}
Это было полезно?

Решение

You're reading and discarding a whole lot of stuff in the file, when you write

    if ( itwo == starstwo[coutwo]){
            btwo[itwo] = secondtwo.next();
            btwo[itwo] = "*";

Then, later when you write

            btwo[itwo] = secondtwo.next();
            System.out.printf("%s", btwo[itwo] + "\t");

there's nothing left to read.

But I still don't understand how that causes your text file to get erased and replaced, like you said it does. There is NO CODE IN YOUR SAMPLE that will erase or write to your text file.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top