如何在java中传递变量?

时间:2013-01-31 20:33:13

标签: java variables

考虑以下代码:

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方法开始工作(原始代码)。我不想删除我的扫描程序方法,我希望它“跳过”扫描程序方法,并继续进入for循环和切换语句。

2 个答案:

答案 0 :(得分:3)

您没有将字符串传递给ColourInput

尝试

ColourInput(line);

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

答案 1 :(得分: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变量,因为它们没有在任何地方的方法中使用。