2016-11-15 6 views
1

私は偽の言語を読み込み、数値、数字、記号のキーワード、文字/文字を表す文字列をテキストファイルに返しますパーサによって読み取られる。whileループで文字を含む文字列を作成するJava

私がいる問題は、テキストファイルに最初に読み込まれるときには、それはそうのように返し複数桁持っている数があるということです。

等しい

1 =文字

12 =

2 =数字

777は、最初のテキストの数字です。

Ex。最初のテキストで:B = 777

最終テキスト:1 12 2 7 2 7 2 7

私は本当に私は私がに文字777を行う必要があります知っている1 12 2 777

をしたいです文字列だけど私の混乱は、私が投稿したループにいるときに、最初にそれを得る方法から来る

私は言葉のための別のループもあり、同じ問題です。

はあなたに

import java.util.Scanner; 
import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 

while(text.charAt(i)>='0'&&text.charAt(i)<='9') 
      { 
       log(Integer.toString(CONST)); 
       System.out.println(CONST); 
       char num =text.charAt(i); 
       System.out.println(num); 
       log(Character.toString(num)); 
       i++; 
      } 

答えて

1

ありがとうあなたのコードが動作しない場合、あなたが最初にすべきことは、テスト可能な何かにそれを形作る、そして失敗したテストを書くことです。

私はであなたのコードを適応:任意Writerではなく、ハードコードに書き込みを行う

  • あなたが説明していない、またはそれは無関係に見えた(CONST、そしてlog())部品を取り外す

    • System.out

    ので:

    private void consumeDigits(Writer writer, String text) throws IOException { 
         int i=0; 
         while (text.charAt(i) >= '0' && text.charAt(i) <= '9') { 
          char num = text.charAt(i); 
          writer.append(num); 
          i++; 
         } 
        } 
    

    今、私はテストを書くことができます。

    @Test 
    public void printStackTrace() throws IOException { 
        String text = "777abcdef"; 
        StringWriter writer = new StringWriter(); 
        consumeDigits(writer, text); 
        assertEquals(writer.toString(), "777"); 
    } 
    

    テストに合格すると、コードが機能するか、要件を誤解しています。しかし、この作業方法を守って失敗したテストを書くと、それはSOの回答者がより簡単に手助けできるものです。

  • +0

    '@ Test'が何であるかわからない場合は、jUnitについて調べてください。それはあなたの人生を救うでしょう。 – slim

    関連する問題