【问题标题】:How to read a String from a txt file and store it into a char array java如何从 txt 文件中读取字符串并将其存储到 char 数组中 java
【发布时间】:2018-01-25 06:13:20
【问题描述】:

所以我试图将一个 txt 文件读入一个 char 数组并打印出内容,但我只得到了要打印的字符串的第一个索引。文件内容为“EADBC”

     public static void main(String args[]) throws IOException
     {

    char [] correctAnswers = new char [20];
    String [] studentName = new String[5];
    char [][] studentAnswers = new char [20][20];

    Scanner sc = new Scanner (System.in);
    System.out.println ("Welcome to the Quiz Grading System \n");
    System.out.println ("Please Enter the name of the file that contains the correct answers");

    Scanner answerFile = new Scanner (new File (sc.next() + ".txt"));

    int i = 0;
    int fillLvl = 0;
    String answer;
    while (answerFile.hasNext() )
    {
        answer = answerFile.next();
        correctAnswers[i] = answer.charAt(i);
        i++;
        fillLvl = i;
    }
    answerFile.close();

    System.out.println("Correct Answers: ");
    for(int j = 0; j < fillLvl; j++)
    {
        System.out.println(correctAnswers[j]);
    }

【问题讨论】:

  • answerFile.next(); 将返回下一个 TokenEADBC,所以如果这就是文件中的全部内容,那么它将不再循环。尝试阅读此字符串,然后将其拆分。尝试在调试器中运行它。
  • 我尝试做类似的事情:字符串答案; while (answerFile.hasNext() ) { answer = answerFile.next(); for(int i = 0; i
  • ... 和 ?会发生什么?
  • 我只让它打印出 E D C,我没有将字符串中的每个索引都放入数组中
  • 你增加了两次i - 删除第二次i++

标签: java arrays string char


【解决方案1】:

从文本文件中读取并转换为数组:

File file = new File("C:\\Users\\dell\\Desktop\\rp.txt");

BufferedReader br = new BufferedReader(new FileReader(file));

String st;
char[] string1={};
int size = 0;

//reads the string and converts into array
while ((st = br.readLine()) != null){
    string1 = st.toCharArray();
    size = st.length();
}

//For printing
for(int i=0;i<size;i++){
    System.out.println(string1[i]);
} 

【讨论】:

    【解决方案2】:

    在while循环里面这样使用..

        while (answerFile.hasNext() )
        {
            answer = answerFile.next();
            int j = 0;
            while(answer != null && !answer.isEmpty() && j < answer.length()){
                correctAnswers[i] = answer.charAt(j);
                i++;
                j++;
                fillLvl = i;
            }
        }
    

    始终推荐使用FileReader、BufferedReader进行文件操作;

    【讨论】:

      【解决方案3】:

      在这里,只需阅读一次并简单地打印它们。不要将它们读入字符串并将它们拆分为字符。

      BufferedReader reader = new BufferedReader(
          new InputStreamReader(new FileInputStream("\\path\\to\\file.extension"))
      );
      
      int c;
      while((c = reader.read()) != -1) {
          char character = (char) c;
          System.out.println(character);
      }       
      
      reader.close();
      

      【讨论】:

        猜你喜欢
        • 2021-07-08
        • 2021-10-25
        • 1970-01-01
        • 2020-05-25
        • 1970-01-01
        • 2012-08-18
        • 1970-01-01
        • 2015-07-23
        • 1970-01-01
        相关资源
        最近更新 更多