如何将结果保存到文本文件中? [复制]

Posted

技术标签:

【中文标题】如何将结果保存到文本文件中? [复制]【英文标题】:How to save results into the text file? [duplicate] 【发布时间】:2013-04-20 16:03:57 【问题描述】:

这是java中的井字游戏,有人可以解释如何将获胜次数XO的次数保存到文本文件中,我查看了类似的线程,但我不知道如何在这种情况下做到这一点。抱歉重复,不知道如何更新最后一个问题。

package xo2;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class XO2 implements ActionListener 
private int[][] winningCombination = new int[][] 
        0, 1, 2,
                    3, 4, 5,
                    6, 7, 8, 
        0, 3, 6,
                    1, 4, 7,
                    2, 5, 8, 
        0, 4, 8,
                    3, 4, 6            
;
private JFrame window = new JFrame("Tic Tac Toe");
private JButton buttons[] = new JButton[9];
private int count = 0;
private String letter = "";
private boolean win = false;

public XO2()

    window.setSize(300,300);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setLayout(new GridLayout(3,3));


    for(int i=0; i<9; i++)
        buttons[i] = new JButton();
        window.add(buttons[i]);
        buttons[i].addActionListener(this);
    


    window.setVisible(true);



public void actionPerformed(ActionEvent a) 
    count++;


    if(count % 2 == 0)
        letter = "O";
    
    else 
        letter = "X";
    


    JButton pressedButton = (JButton)a.getSource();
    pressedButton.setText(letter);
    pressedButton.setEnabled(false);


    for(int i=0; i<8; i++)
        if( buttons[winningCombination[i][0]].getText().equals(buttons[winningCombination[i][1]].getText()) &&
                buttons[winningCombination[i][1]].getText().equals(buttons[winningCombination[i][2]].getText()) &&
                !buttons[winningCombination[i][0]].getText().equals(""))
            win = true;
        
    


    if(win == true)
        JOptionPane.showMessageDialog(null, letter + " Won!");
        System.exit(0);
     else if(count == 9 && win == false)
        JOptionPane.showMessageDialog(null, "Draw!");
        System.exit(0);
    


public static void main(String[] args)
    XO2 starter = new XO2();

【问题讨论】:

我希望有一个按钮:100000000000% 重复。 对不起maroun maroun,我是这个论坛的新人 【参考方案1】:

把你的代码改成这个

编辑代码 3

import java.awt.*;
import java.awt.event.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;

import javax.swing.*;

        public class XO2 implements ActionListener 
        private int[][] winningCombination = new int[][] 
                0, 1, 2,
                            3, 4, 5,
                            6, 7, 8, 
                0, 3, 6,
                            1, 4, 7,
                            2, 5, 8, 
                0, 4, 8,
                            3, 4, 6            
        ;
        private JFrame window = new JFrame("Tic Tac Toe");
        private JButton buttons[] = new JButton[9];
        private int count = 0;
        private String letter = "";
        private boolean win = false;

        public XO2()

            window.setSize(300,300);
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.setLayout(new GridLayout(3,3));


            for(int i=0; i<9; i++)
                buttons[i] = new JButton();
                window.add(buttons[i]);
                buttons[i].addActionListener(this);
            


            window.setVisible(true);
        


        public void actionPerformed(ActionEvent a) 
            count++;


            if(count % 2 == 0)
                letter = "O";
            
            else 
                letter = "X";
            


            JButton pressedButton = (JButton)a.getSource();
            pressedButton.setText(letter);
            pressedButton.setEnabled(false);


            for(int i=0; i<8; i++)
                if( buttons[winningCombination[i][0]].getText().equals(buttons[winningCombination[i][1]].getText()) &&
                        buttons[winningCombination[i][1]].getText().equals(buttons[winningCombination[i][2]].getText()) &&
                        !buttons[winningCombination[i][0]].getText().equals(""))
                    win = true;
                
            


            if(win == true)
                JOptionPane.showMessageDialog(null, letter + " Won!");
                try 
                    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter( "c:\\calc\\output.txt", true)));
                    out.println(letter + "Won!");
                    out.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
                System.exit(0);
             else if(count == 9 && win == false)
                JOptionPane.showMessageDialog(null, "Draw!");
                try 
                    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter( "c:\\calc\\output.txt", true)));
                    out.println("Draw!");
                    out.close();
                 catch (IOException e) 
                    e.printStackTrace();
                

                System.exit(0);
            
        

        public static void main(String[] args)
            XO2 starter = new XO2();
        


并确保在添加之前创建了要写入的文本文件

我添加的代码用双星号标记

希望对你有帮助

【讨论】:

您是否确保首先创建了文件并在程序中添加了正确的路径,因为它对我有用 是的,我将位置更改为 desctop,并制作了 output.txt 文件 您是否在每个文件夹之间添加了双反斜杠,例如“c:\\calc\\output.txt”,因为如果您执行单个操作,则不会发生任何事情 哦,它现在可以工作了,但是当你再次玩它时它会删除最后一个游戏结果,你可以将所有结果保留在列中吗? 是的,您可以这样做用我上面编辑的答案中的代码替换您的代码

以上是关于如何将结果保存到文本文件中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将结果保存到文本文件

如何将多个文件进行合并?

如何通过java过滤文本文件并将结果保存到新文件中

如何将统一检查员的输入保存到文本文件

如何从控制台读取多行文本,然后将内容保存到带有换行符的文件中?

使用带有保存对话框的 java 将内容导出到文本文件