0

これは私の課題です:

ユーザーが文字列を入力すると、プログラムはそれを 1 行に 1 文字ずつモニターにエコーするプログラムを作成します。

C:\>java LinePerChar
Enter a string:
Octopus

O
c
t
o
p
u
s

試してみましたが、コンパイルエラーが発生します。これが私のコードです:

import java.util.*;

class CharactorEcho{
    public static void main(String args []){

        Scanner sc = new Scanner(System.in);

        System.out.println("Enter a string :");

        try {
            String inputString = sc.nextLine();
            for(int i=0; i < sc.length(); i++) {
                char c = inputString.charAt(i);
                System.out.println("" + c);
            }
        } catch(IOException e) {

        }
    }
}
4

3 に答える 3

7

ループでは、スキャナー自体ではなく、Stringから取得するの長さにわたってループする必要があります。Scanner.nextLine

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

同じ行の各文字で入力をエコーする場合は、のSystem.out.print代わりにを使用しprintlnます。

于 2012-10-16T15:51:24.347 に答える
3

2 つの問題:

for(int i=0; i<sc.length(); i++){に変更for(int i=0; i<inputString.length(); i++){

入力文字列ではなく、スキャナーと比較することに注意してください。

また、捕まえてみてください

   java.util.NoSuchElementException
   java.lang.IllegalStateException

の代わりに、 throws and 、 notを使用したIOExceptionステートメントとして。sc.nextLine()NoSuchElementExceptionIllegalStateExceptionIOException

関連する import ステートメントを必ず追加してください。

于 2012-10-16T15:54:55.240 に答える
3

をインポートする必要がありますIOExceptionpackage次の行をコードの先頭に追加します。行がある場合はその行の直後に追加します。

import java.io.IOException;

また、sc文字列ではなく長さを求めているので、次のように変更forします。

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

しかし、本当に、あなたは捕まえるべきではありませんIOException. 実際、コードが例外をスローすることはありません。本当に必要なのはこれだけです:

public static void main(String args []){

    Scanner sc = new Scanner(System.in);

    System.out.println("Enter a string :");

    String inputString = sc.nextLine();
    for(int i=0; i < sc.length(); i++) {
        char c = inputString.charAt(i);
        System.out.println("" + c);
    }
}

made withを呼び出すnextLineと、アクセスできない場合にのみ例外がスローされ、 でさえないため、心配する必要はありません。ScannerSystem.inSystem.inIOException

最後に 1 つ注意点があり"" + cますprintlnSystem.outにはprintln専用のメソッドがあるためchar、次のように呼び出すことができます。

System.out.println(c);
于 2012-10-16T16:02:11.033 に答える