java - 使用子字符串时出错 : String Index out of range : -1 *Java*

标签 java

在这个程序中,我只是从文件中获取输入,并尝试从中获取男孩的名字和女孩的名字,并将它们放入单独的文件中。我已经按照书上说的做了一切。我还在网上到处搜索了这方面的帮助,但似乎找不到任何有同样问题的人。我见过一些问题,它不是 -1 而是正数,因为它们超出了字符串的范围,在字符串长度上调用子字符串。但似乎无法弄清楚这给了我 -1,因为 i 的值为 1。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.ArrayList;


public class Homework_11_1 {

public static void main(String[] args)throws FileNotFoundException 
{
   File inputFile = new File("babynames.txt");
   Scanner in = new Scanner(inputFile);
   PrintWriter outBoys = new PrintWriter("boys.txt");
   PrintWriter outGirls = new PrintWriter("girls.txt");


   while (in.hasNextLine()){
    String line = in.nextLine();
    int i = 0;
    int b = 0;
    int g = 0;
    while(!Character.isWhitespace(line.charAt(i))){ i++; }
    while(Character.isLetter(line.charAt(b))){ b++; }
    while(Character.isLetter(line.charAt(g))){ g++; }
    String rank = line.substring(i);
    String boysNames = line.substring(i, b);
    String girlsNames = line.substring(b, g);
    outBoys.println(boysNames);
    outGirls.println(girlsNames);
    }

    in.close();
    outBoys.close();
    outGirls.close();
    System.out.println("Done");
}


}

这是txt文件

    1 Jacob Sophia
    2 Mason Emma
    3 Ethan Isabella
    4 Noah Olivia
    5 William Ava
    6 Liam Emily
    7 Jayden Abigail
    8 Michael Mia
    9 Alexander Madison
    10 Aiden Elizabeth

最佳答案

我会用另一种方式编写它,使用 split。

public static void main(String[] args)throws FileNotFoundException 
    {
       File inputFile = new File("babynames.txt");
       Scanner in = new Scanner(inputFile);
       PrintWriter outBoys = new PrintWriter("boys.txt");
       PrintWriter outGirls = new PrintWriter("girls.txt");


       while (in.hasNextLine()){
        String line = in.nextLine();
        String[] names = line.split(" "); // wile give you [nbr][boyName][GirlName]

        String boysNames = names[1];
        String girlsNames = names[2];
        outBoys.println(boysNames);
        outGirls.println(girlsNames);
        }

        in.close();
        outBoys.close();
        outGirls.close();
        System.out.println("Done");
    }

关于java - 使用子字符串时出错 : String Index out of range : -1 *Java*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416818/

相关文章:

java - Java中如何用Spring MVC实现文件下载?

java - 卡夫卡流-TimeoutException : Expiring * record(s) for TOPIC:* ms has passed since batch creation

java - 为什么计数器是 double 而不是 long?

java - 远程异常 java.rmi.UnmarshalException : error unmarshalling return

java - JpaRepository findAll() 正在获取嵌套对象

java - html5检查器编译

java - 在 ListView 中单击复选框时,值未添加到数组列表中。

java - SwingUtilities.invokeLater(new Runnable()) 到底如何工作?

java - 将行写入输出文件(java)后尝试打印它们

java - 我需要在单元测试中测试边界类吗?