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

colorRead メソッドから変数を取得し、何らかの方法でそれを

fullWord 

メソッド内の変数ColourInput()

テキスト ファイルを読み込んで、各文字に関連付けられた特定の色を出力しようとしています。colorRead メソッドで新しい switch ステートメントを作成したくありません。明らかに、これは悪いプログラミング方法だからです。

何か助けてください。

私が何を求めているのかまだわからない場合は、再編集します

編集:問題は、 ColourInput(line) メソッドを呼び出した後、 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変数はどこのメソッドでも使用されていないため、最初の2つのメソッドから変数を削除することもできます。

于 2013-01-31T20:41:19.177 に答える