0

ユーザーが不明な名前の値を入力し、入力された最も長い名前を出力できるようにするプログラムを作成しようとしています。これはこれまでの私のコードです。コンパイルすると、いくつかのエラーが発生し、それらはすべて同じ「シンボルが見つかりません」です。もしそうなら、どこでそれらの変数を初期化する必要がありますか?

import java.util.Scanner; 
public class Name 
{ 
    public static void main(String[] args) 
    { 
        Scanner kb = new Scanner(System.in); 
        longestName(kb); 
    } 
    public static void longestName(Scanner sc) 
    {

        String name=kb.nextLine();
        biggestName=name;
        System.out.println("Type -1 if you want to quit");
        int number=kb.nextInt();
        While (number !=-1); 
        { 
            String name1=kb.nextLine();
            if (name1.length() > biggestName)
            {
                biggestName=name1;
            }
            System.out.println("Do you want to continue? Type -1 to quit.");
            int number1=kb.nextInt();
        }
        System.out.println("Longest name is "+biggestName);

    }
}

みんながエラーを修正してくれてありがとう、そして他のいくつかの変更とプログラムは正しい出力を与えます。

import java.util.Scanner; 
public class Name 
{    
    public static void main(String[] args) 
    { 
        Scanner kb = new Scanner(System.in); 
        longestName(kb); 
    } 
    public static void longestName(Scanner kb) 
    {

        String biggestName;
        System.out.println("Enter the first name");
        String name=kb.nextLine();
        biggestName=name;
        System.out.println("Type -1 if you want to quit");
        int number=kb.nextInt();
        while (number !=-1) 
        { 
            System.out.println("Enter another name");
            Scanner kb1 = new Scanner(System.in);
            String name1=kb1.nextLine();
            int length1=biggestName.length();
            int length2=name1.length();
            if (length2 > length1)
            {
                biggestName=name1;
            }
            System.out.println("Do you want to continue? Type -1 to quit.");
            number=kb.nextInt();
        }
        System.out.println("Longest name is "+biggestName);

    }
}
4

5 に答える 5

1

to に渡しましScannerlongestNameが、longestNameではパラメータに という名前を付けましたscscの代わりに使用kblongestNameます。

;whileの代わりに小文字を使用します。;Whileに続くセミコロンを削除します。whileそこにあるセミコロンは、その下のブロックではなく、それが本体であることを意味します。{ }

while ループの最後で、すぐに範囲外にnumberなる新しい変数ではなく、次の整数を に割り当てたいと仮定します。number1

biggestName(または) とは何かを宣言しませんでしたname

于 2013-03-27T20:15:41.557 に答える
1

あなたのコードにはかなりの数のエラーがあります。すべてのエラーを詳細に説明することなく、動作する変更されたバージョンの例を次に示します。

import java.util.Scanner; 
public class Name 
{ 
    public static void main(String[] args) 
    { 
        Scanner kb = new Scanner(System.in); 
        longestName(kb); 
    } 
    public static void longestName(Scanner sc) 
    {
        System.out.println("Enter name, or type '-1' if you want to quit");

        String name=sc.nextLine();
        String biggestName="";

        while (!name.equals("-1")) 
        { 
            if (name.length() > biggestName.length())
            {
                biggestName=name;
            }
            name=sc.nextLine();
        }
        System.out.println("Longest name is "+biggestName);

    }
}
于 2013-03-27T20:28:37.120 に答える
0

ここに 2 つのエラー:

While (number !=-1); 

Whileである必要がありwhile;無限ループになります。

numberもう 1 つの問題は、とにかくループ内で変更しないことです。

于 2013-03-27T20:15:49.530 に答える
0

1-

public static void longestName(Scanner sc)

スキャナーの名前を に変更するか、メソッド内のkbすべてを に変更します。kbsc

2- nextXXX の後に nextLine を使用する場合のスキャナーの問題を参照してください。

3-whileの代わりに を使用しWhile、 を削除し;ます。

于 2013-03-27T20:16:06.330 に答える
0

コードに以下の問題が見られます。

  1. longestName()scメソッドは代わりに参照名を使用する必要がありますkbkbスコープはmainメソッド内にのみあるため)
  2. 変数biggestNameが宣言されていません。クラス変数またはlongestName()メソッド内の変数として宣言する必要があり、型である必要がありますString
  3. ではなくWhilewhile小文字の 'w' である
  4. while ステートメントの後にセミコロンがあってはなりません
  5. while ループの最後で、while ループで比較される数値が計算され、現在間違った変数に割り当てられています。変数は読み取られたり使用されたりしないため、kb.nextInt()変数に割り当てる必要があります。numbernumber1number1
  6. この>演算子は文字列型には適用できません。の行if (name1.length() > biggestName)では、 と比較intしてStringおり、コンパイル エラーが発生します。行は次のように変更する必要がありますif (name1.length() > biggestName.length())
  7. 数値ではない入力を提供している場合、メソッドnextInt()がスローされます。InputMismatchException

今では、Joe Elleson のように修正したコードを書くべきだったと感じています。しかし、この答えが役に立てば幸いです。

于 2013-03-27T21:14:25.230 に答える