2013-12-19 36 views
-1

這段代碼還沒有完成,但我不斷得到輸出中txt文件(cpu.txt)變爲「null」的問題,有誰知道我做錯了什麼?謝謝。在java中導入的txt文件,但輸出爲「null」

這是輸出:

--------------------配置:--------------- -----

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 

當前可用點:0分。 1.塗抹板 2.撥打賓果! 3.使用獎金(1000點) 4.接下來調用

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  
     } 
    } 
} 
+1

當你說文本文件變爲空時,你是什麼意思?你的意思是它被擦掉了嗎?替換爲包含單詞「null」的文件?或者你的意思是說一個變量沒有設置爲你期望的值?請澄清。 –

+0

你的文件本身被擦除,並且文件中的每個數字都被替換爲單詞「null」。 – HayleyL

+0

那麼寫入文件的代碼在哪裏呢?我看不到它 - 其他東西太多了。那將是您開始尋找問題的好地方。你可能會發現調試器是一個有用的過程。 –

回答

0

你正在閱讀和文件中丟棄了一大堆東西,當你寫

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

然後,後來當你寫

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

沒有什麼可讀的。

但我還是不明白這是如何導致你的文本文件被擦除和替換,就像你說的那樣。您的示例中沒有代碼會刪除或寫入您的文本文件。