2016-03-26 44 views
0

私は、いくつかの行のテキストファイルを読み込み、その後、すべての文字のUNICODE値を数える必要があるので、 "hello"の合計は532であり、 "howあなたは1059なのですか? "というように、すべての文字列は.txtドキュメントの新しい行から始まり、今のところ良いものです。 しかし、すべての行について、私は自分の値だけを出力する必要があり、コードが動作する方法はすべての行の値を追加し、lxtineの終わりが来ると停止する方法で頭を上げません。 : *読んライン *カウントcharは 値* を追加*それらを 印刷する*次の行のために、最初からやり直して、あなたforループの後にそうJAVA - テキストファイルから読み込み、改行を認識する

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.Reader; 
import java.lang.String; 
import java.util.Arrays; 

public class SumLines { 

    public static void main(String[] args) { 

     String filePath = "/home/lines.txt"; 
     String readLine; 
     int sum = 0; 

     try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath))) { 
      while ((readLine = bufferedReader.readLine()) != null) { 
       char[] array = new char[readLine.length()]; 
       System.out.println(readLine); 

       for (int i = 0; i < readLine.length(); i++) { 

        Arrays.fill(array, readLine.trim().charAt(i)); 
        sum += (int) array[i]; 

        System.out.print(sum + " "); 
       } 
      } 
     } catch (IOException e) { 
      System.out.println("Error.\n Invalid or missing file."); 
      e.printStackTrace(); 
     } 
     System.out.println("\n*** final " + sum); 
    } 
} 
+0

OP、新しい行が開始されたとき(それは私の場合を助けることができる場合) にはどうすれば合計が最後に表示されているので –

答えて

0

、あなたがしたい場合は0にsumを設定合計金額を表示したら、別の変数、たとえばtが必要です。

for (int i = 0; i < readLine.length(); i++) { 
    Arrays.fill(array, readLine.trim().charAt(i)); 
    sum += (int) array[i]; 
    System.out.print(sum + " "); 
} 
t=t+sum; 
sum=0; 

そして、最後にtを印刷する:このように

+0

その他の操作を行うことになっている伝えることができます。 – RubioRic

+0

@RubioRic質問には言及されていませんが、必要であれば別のバリバリを追加することができます。待って、私はそれを編集しています。 – Hackerdarshi

+0

それは明らかに問題ではありませんが、あなたの元の解決策はOPのための別の問題を生成するでしょう。 – RubioRic

1

私が正しく理解している場合、入力のために:

hello 
how are you 

あなたは出力として、このような何かを取得したいと思います:このため

hello 532 
how are you 1059 

*** final 1591 

、あなたをコードにいくつかの変更を加える必要があります:

行あたりの文字数値の合計を計算することに加えて
  • 、文字の合計
  • あなたドン」の値が続く行を印刷し、各入力行の場合、すべての行
  • の合計の別の合計を保ちます

    int total = 0; 
    
        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath))) { 
         String readLine; 
         while ((readLine = bufferedReader.readLine()) != null) { 
          String trimmed = readLine.trim(); 
          int sum = 0; 
          for (int i = 0; i < trimmed.length(); i++) { 
           sum += (int) trimmed.charAt(i); 
          } 
          System.out.println(readLine + " " + sum); 
          total += sum; 
         } 
        } catch (IOException e) { 
         System.out.println("Error.\n Invalid or missing file."); 
         e.printStackTrace(); 
        } 
        System.out.println("\n*** final " + total); 
    
    :tはそれが代わりのすべての文字このよう

ため、一度の入力ラインをトリミングする方が良いでしょう、すべての

  • で配列が必要
  • 0

    簡単な解決策は、sum変数の範囲を制限することです。こうすることで、値が実行の間保持されません。

    import java.io.BufferedReader; 
    import java.io.FileReader; 
    import java.io.IOException; 
    import java.io.Reader; 
    import java.lang.String; 
    import java.util.Arrays; 
    
    public class SumLines { 
    
        public static void main(String[] args) { 
    
         String filePath = "/home/lines.txt"; 
         String readLine; 
         int totalSum = 0; 
    
         try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath))) { 
          String readLine; 
          while ((readLine = bufferedReader.readLine()) != null) { 
           int sum = 0; 
    
           for (int i = 0; i < readLine.length(); i++) { 
            sum += (int) readLine.charAt(i); 
           } 
    
           System.out.println(readLine + ": " + sum); 
           totalSum += sum; 
          } 
         } catch (IOException e) { 
          System.out.println("Error.\n Invalid or missing file."); 
          e.printStackTrace(); 
         } 
         System.out.println("\n*** final " + totalSum); 
        } 
    } 
    

    また、あなただけのcharのUnicode値を取得するには、このような複雑なものを使用する必要はありません。私はいくつかの改善を行った。

    0

    最終合計と1行の2つの変数があります。要するに、ここで

    public class SumLines { 
    
    public static void main(String[] args) { 
    
        String filePath = "/home/lines.txt"; 
        String readLine; 
        int totalSum = 0; 
        int lineSum = 0 
    
        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath))) { 
         while ((readLine = bufferedReader.readLine()) != null) { 
          char[] array = new char[readLine.length()]; 
          System.out.println(readLine); 
    
          for (int i = 0; i < readLine.length(); i++) { 
    
           Arrays.fill(array, readLine.trim().charAt(i)); 
           lineSum += (int) array[i]; 
    
           System.out.print(lineSum + " "); 
          } 
          totalSum += lineSum + totalSum; 
          lineSum = 0; 
         } 
        } catch (IOException e) { 
         System.out.println("Error.\n Invalid or missing file."); 
         e.printStackTrace(); 
        } 
        System.out.println("\n*** final " + totalSum); 
    } 
    

    }

    関連する問題