Я пишу программу для покера.Почему мои карты не печатаются в текстовом файле?
В настоящее время, я думаю, проблема в способе тасования. Он должен генерировать 52 карты, все отличные друг от друга, генерируя случайное число от 0 до 51 (всего 52), сопоставляя этот «идентификатор» с конкретной картой (через конструктор класса «Карта»), а затем проверяя чтобы увидеть, была ли карта уже сгенерирована. Если бы это было так, это не получилось бы, и счетчик не посчитал бы это. Если бы это не было, это было бы напечатано в текстовом файле под названием «Deck.txt» и так далее, пока не было напечатано 52 карты.
Программа работает нормально, но когда я проверяю файл Deck.txt
, там никогда ничего нет.
Вот мой код:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.NoSuchElementException;
import java.util.Random;
import java.util.Scanner;
public class Deck {
static private File deck = new File("Deck.txt");
static private Random shuffler = new Random();
static private Scanner dreader;
static public void shuffle() {
int card;
for (int i = 0; i < 52; i++) {
card = shuffler.nextInt(52)+1;
PrintWriter cwriter = null;
try {
cwriter = new PrintWriter(deck);
} catch (FileNotFoundException e) {
// File not found
}
if (DeckChecker(card)) {
try {
cwriter.println((new Card(card)).toString());
} catch (NullPointerException e) {
// File never opened
}
}
else n--;
}
}
private static boolean DeckChecker(int card) {
try {
dreader = new Scanner(deck);
} catch (FileNotFoundException e) {
}
boolean switch1 = true;
String s = null;
while (switch1) {
try{
s = dreader.nextLine();
}catch(NoSuchElementException e){
return true;
}
if (Card.getId(s) == card)
return false;
}
return true;
}
}
.
public class Card {
static final private String[] number = { "2", "3", "4", "5", "6", "7", "8",
"9", "10", "J", "Q", "K", "A" };
static final private String[] symbol = { "Diamond", "Spades", "Hearts",
"Clubs" };
private String cnumber;
private String csymbol;
private String cardName;
private StringBuilder namer;
public Card(int id) {
csymbol = symbol[(int) id/13];
cnumber = number[id - (((int) id/13) * 13)];
namer.append(cnumber).append(" of ").append(csymbol);
cardName = namer.toString();
}
@Override
public String toString() {
return cardName;
}
static public int getId(String card) {
int s = 0;
int n = 0;
boolean switch1 = true;
String cards = card.substring(6);
String cardn = card.substring(0, 1);
while (switch1) {
if (cardn.equals(number[n]))
switch1 = false;
else
n++;
}
switch1 = true;
while (switch1) {
if (cards.equals(number[s]))
switch1 = false;
else
s++;
}
return (s * 13) + n;
}
}
Этот код не компилируется. У вас 'n -', но 'n' не определен. – durron597
Игнорирование 'FileNotFoundException', а затем игнорирование« NullPointerException »вызывает и никогда не закрывает автора, все * внутри цикла *. Хлоп !!!!!! – Andreas