1

これは私のコードです:

   import java.io.*;
   import java.util.*;

   public class Testing {
       public static void main(String[] args) {
           Scanner in = new Scanner(System.in );
           PrintStream out = System.out;

           String input = in .next();
           String output = "";
           char c = 0;
           int count = 0;
           int countInput = input.length();

           for (int i = 0; i < countInput; i++) {
               if (i == 0) {
                   c = input.charAt(i);
                   count++;
               } else {
                   if (c == input.charAt(i)) {
                       count++;
                   } else {
                       output = output + count + "" + c;
                       count = 1;
                       c = input.charAt(i);
                       out.println(output);
                   }
               }
           }
           output = output + count + "" + c;
           out.println(output);
       }
   }

このプログラムは、次のように動作すると想定されています。

入力:

Java テスト AAAAAnnnfffkk

出力:

5A3n3f2k

どういうわけかこれを修正する必要があります:

String input = in.next();

どこかで使用する必要があると思いますargsが、どこかはわかりません。

4

4 に答える 4

3

プログラムロジックは大丈夫です。しかし、あなたがやりたいことに基づいて、あなたはScannerクラスを必要としないでしょう。

入力をarguments配列から取得する場合は、次のmain(String[] args)ように入力に割り当てる必要があります。

String input = args[0];

しかしねえ、あなたが引数を与えずにプログラムを実行した場合はどうなりますか?例外がスローされるため、何らかのエラー処理が必要です。

String input = "";
if (args.length > 0) {
    input = args[0];
}
于 2012-07-12T01:12:42.360 に答える
1

これを一歩ずつ進めることができます。

まず、入力を取得するプログラムを作成し、一度に 1 文字ずつ出力します。

その理由は、入力を読み取って一度に 1 文字ずつ処理する必要があるためです。最初のステップは、ループの仕組みを理解することです。

正しくループしたら、文字の繰り返しをカウントするロジックについて心配することができます。

それが完了したら投稿を編集してください。ここにさらに投稿します。

于 2012-07-12T00:58:50.733 に答える
0

main メソッドは必ず必要です。メインについては、このリンクを読んでみてください。それが役に立てば幸い。 http://www.dreamincode.net/forums/topic/38921-a-closer-look-at-the-main-method/

于 2012-07-12T00:59:47.987 に答える
0

コード例:

//importing lib
import java.util.Scanner;

//file name "Hello.java"
public class Hello {
    //Main method
    public static void main(String[] args) {
        //input reader
        Scanner input = new Scanner(System.in);
        //output storage
        StringBuilder output = new StringBuilder("");


        //read a line, you can use other command in this class to parse
        output.append(input.nextLine());
        //write a line
        System.out.println(output.toString());
    }
}

編集:

引数を使用したい場合:

public class Hello {
    // Main method
    public static void main(String[] args) {
        // output storage
        StringBuilder output = new StringBuilder("");
        // check if there are arguments
        if (args.length > 0) {
            // use string
            output.append(args[0]);
        }
        // write a line
        System.out.println(output.toString());
    }
}
于 2012-07-12T01:05:41.353 に答える