【问题标题】:Trouble determining various elements in a text-file read in program (java)无法确定程序中读取的文本文件中的各种元素(java)
【发布时间】:2012-10-22 16:01:28
【问题描述】:

我无法确定如何以可用的方式拆分文本文件中的单独元素。我的程序是在一个文本文件中读入一个数组列表,显示可能的答案,要求一个答案,只有在给出正确答案时才继续。麻烦的是,文本文件必须有不同数量的答案,因此没有数字方法来确定何时在文本文件中找到问题以及有多少问题。这是一个测验文本文件的示例:

要舔几下才能到达 tootsie pop 的 tootsie roll 中心?(QUESTION

4(分配给正确答案的数值)

可能的答案

一个

两个

三个

四个

你叫什么名字?

3

英国国王亚瑟

勇敢的兰斯洛特爵士

罗宾爵士不像兰斯洛特爵士那么勇敢

谁先上?

5

什么

为什么

因为

我不知道

我讨厌问你们一个广泛的逻辑问题,但我真的被困在这个问题上。 这是我的代码:

import java.util.*;
import java.io.*;
public class JavaApplication8 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException{

    Scanner inScan = new Scanner(System.in);

    String file_name;
    System.out.print("What is the full file path name?\n>>");
    file_name = inScan.next();

    Scanner fScan = new Scanner(new File(file_name));
    ArrayList<String> Questions = new ArrayList();



    while (fScan.hasNextLine()) 
    {
        Questions.add(fScan.nextLine());
    }

    System.out.println(Questions.get(0));
    System.out.println(Questions.get(2));
    System.out.println(Questions.get(3));
    System.out.println(Questions.get(4));
    System.out.println(Questions.get(5));


    String guess;
    System.out.print("What is your answer?\n>>");
    guess = inScan.next();

    if (guess == Questions.get(1))
    {
        System.out.println("Correct");
    }

    else

        System.out.println("Incorrect");






}

**我没有为其他问题编写代码,只有第一个问题。

【问题讨论】:

  • 提出一个广泛的问题是一个问题,但我在您上面的帖子中根本看不到任何问题。请澄清并问一个。
  • 如何确定文本文件中何时存在问题?我通常会计算文本文件中的行数并通过除法将它们平均分割,那么每个答案的可能问题的数量一定是奇数。
  • 在我看来,您的文件格式对您没有帮助,因为您的可能答案数量不一致,但无法确定应该有多少(前 2 个有 4 个,最后一个一个有 5)
  • @MadProgrammer 现在你看到了我的问题。这显然不是我强加给自己的规则

标签: java file text arraylist


【解决方案1】:

问号? 的唯一实例似乎是有问题时。测试文件中的每一行以查看该行中是否有问号。如果是这样,那么这是一个新的问题/答案集。

【讨论】:

  • 要查找文本问号,您可以对字符串使用indexOf(s) 函数:docs.oracle.com/javase/7/docs/api/java/lang/…
  • 这绝对是非常有帮助的。我将查找分隔符的使用。但问题仍然是如何确定有多少可能的答案。对于每个问题,我必须将可能的答案连同问题一起打印出来。对于我的问题,我实际上并没有包含整个文本文件。在可能的答案之后,有三个数字表示我必须修改的测验的其他某些属性(回答正确/不正确的时间)
  • 结束可能是唯一一次数字值直接跟随答案,对吗? (即“正确答案”输入紧跟在一个问题之后——不是一个答案选择)因此,检查输入行是否包含?。如果是,你有一个新问题要处理。如果不是,请检查它是否是一个数字,并且最后一个输入不是一个新问题。如果是这样,您已经达到了 EOF 的数字。否则,您可以选择答案。
  • 谢谢。这很有帮助。我希望讲座中会提到一个解决方案,但可惜没有
  • 很高兴能帮上忙!如果认为我的解决方案令人满意,请“接受”我的解决方案——谢谢。 ;)
猜你喜欢
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多