0

考虑这段代码:

private static void colourRead(String s) throws IOException {
    FileReader readhandle = new FileReader("C:\\****\\****");
    BufferedReader br = new BufferedReader(readhandle);
    String line = null;
    while ((line = br.readLine()) != null) {
        ColourInput(); //there's an error here
    }

    br.close();
    readhandle.close();
}

private static void ColourInput(String s) {
    char letter;

    String fullWord;
    Scanner kb = new Scanner(System.in);

    System.out.print("Enter whatever: ");

    fullWord = kb.nextLine();
    System.out.println(fullWord);

    for (int i = 0; i < fullWord.length(); i++) {
        letter = fullWord.charAt(i);
        switch (Character.toUpperCase(letter)) {
        case 'A': {
            Blue();
        }
            break;
        }
    }
}

我可以携带吗

line

colourRead 方法中的变量,并以某种方式将其分配给

fullWord 

方法中的变量ColourInput()

我正在尝试读取一个文本文件,并输出与每个字母相关的某些颜色。我不想在 colourRead 方法中创建新的 switch 语句,因为显然这是一种不好的编程习惯。

请问有什么帮助吗?

如果你仍然不确定我在问什么,我会重新编辑

编辑:问题是在调用 ColourInput(line) 方法后, Scanner 方法开始工作(原始代码)。我不想删除我的 Scanner 方法,我希望它“跳过”scanner 方法,并继续进入 for 循环和 switch 语句。

4

2 回答 2

3

您没有将字符串传递给您的调用ColourInput

尝试

ColourInput(line);

还值得一提的是,您读取文件的代码不安全,您应该尝试读取文件,IOException在子句中捕获并关闭文件,如果您的代码在循环中的finally某处崩溃,您的文件可能保持打开状态while

于 2013-01-31T20:34:45.053 回答
1

如果我理解正确,您希望能够使用该ColourInput方法的结果重复该方法的功能ColourRead

    private static void colourRead() throws IOException
{
    FileReader readhandle = new FileReader("C:\\****\\****");
    BufferedReader br = new BufferedReader(readhandle);
    String line = null;
    while((line = br.readLine()) != null)
    {
      ColourText(line); //there's an error here
    }

    br.close();
    readhandle.close();
}

private static void ColourInput() 
{

  String fullWord;
  Scanner kb = new Scanner(System.in);

  System.out.print("Enter whatever: ");

  fullWord = kb.nextLine();
  System.out.println(fullWord);
  ColourText(fullWord);
}

private static void ColourText(String text)
{

    char letter;
    for (int i = 0; i < text.length(); i++)
    {
      letter = text.charAt(i);
      switch(Character.toUpperCase(letter))
      {
          case 'A':
          {
             Blue();
          }
          break;
      }
}

无论是从文件中读取文本还是从键盘输入(使用ColourText更改颜色的方法),这都可以让您为文本着色。但是正如其他人所提到的,您也应该添加到文件读取代码中。

String s编辑:您还可以从前两种方法中删除变量,因为它们没有在任何地方的方法中使用。

于 2013-01-31T20:41:19.177 回答