阅读卡片组

时间:2014-12-10 01:33:03

标签: java input output playing-cards

我需要一些重要的帮助。我不知道去哪里。我完全脱离了我的深度。

我需要以[RANK - SUITE]格式从输入文件中读取播放卡代码列表。

有效排名为:2-10岁,J,Q,K,A(小丑,女王,国王,王牌)

有效套房包括:C,D,H,S(俱乐部,钻石,心形,黑桃)

然后我需要将它们输出到一个文件,因此输入文件将具有2-c然后程序将写入输出文件:

  

两个俱乐部 - 价值= 2

我几乎已经选择了输入文件(我将发布下面的代码),但我不知道该怎么做。我认为我需要使用.nextline()来阅读每一行,但我不知道该怎么做。有人可以帮忙吗?

 public class CardTest {
 Scanner input = new Scanner(System.in);

 public static void main(String[] args) 
 {
  inputFile(); 
 }

 public static void inputFile ()
 {
   JFileChooser chooser = new JFileChooser();
   Scanner in = null; 
   Scanner console; 

   try {
   if (chooser.showOpenDialog(null) == JFileChooser.CANCEL_OPTION)
   {
       System.exit(0); 
   }
   if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
   {
       File selectedFile = chooser.getSelectedFile(); 
       in = new Scanner(selectedFile); 

   }
   }
   catch (FileNotFoundException e) 
   {
       JOptionPane.showMessageDialog(null, "Could not find the file, please type the file name into dialog box");
       System.out.println("Type in your input file"); 
       console = new Scanner(System.in);
       String selectedFile = console.next(); 
       in = new Scanner(selectedFile); 

   }
   in.close(); 
 }

2 个答案:

答案 0 :(得分:1)

你可以采用传统的String#替换方式。示例如下。

File file = ...;
try {
    Scanner scanner = new Scanner(file);
    while(scanner.hasNextLine()) {
        String line = scanner.nextLine();
        String[] values = line.split("-");
        String rank = values[0].replace("[", "").trim();
        String suite = values[1].replace("]", "").trim();
        System.out.println(rank + " of " + suite + " - Value = " + rank); // *****
    }
} catch (Exception e) {
    e.printStackTrace();
}

输入:

[2-C]

输出:

2 of C - Value = 2

您可以而且应该根据自己的喜好修改println功能。

答案 1 :(得分:0)

这里有很多关于如何阅读文件的问题/答案。 为了解决你的整个问题,我将其分解为以下步骤。此外,大多数技术细节都可以通过在互联网上搜索来解决。

  1. 逐行读取文件。请参阅:https://stackoverflow.com/a/4716623/1688441
  2. 您需要解析每一行。如果您按照1中的链接,逻辑上每行将是一个字符串。您可以使用正则表达式,也可以只使用split方法将字符串拆分为2个元素的数组。使用' - '字符。示例:String elements[] = line.substring(1,line.length()-1).split("-")
  3. 所以现在你将得到一个包含2个元素的数组,第一个元素是rank,第二个元素是suit
  4. 您需要一个查找表(例如使用HashMap),将短缩写转换为实际的文本描述。这个映射可能是一个类变量(C全局等价),你应该在开始时初始化它。
  5. 创建一个采用2元素数组的方法,将其转换为文本描述语句,并将其写入文件。
  6. 如果您按照上述5个步骤操作,这是解决问题的良好路线图。

    每当遇到问题时都会在Google上进行搜索,例如:

    最后的想法:

      

    给一个人一条鱼,你喂他一天;教一个男人钓鱼,你喂他一辈子。

    -Maimonides