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

您传入了您的Scannerto longestName,但在 中longestName,您命名了参数sc。使用sc而不是kbin longestName

使用小写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

这里有两个错误:

While (number !=-1); 

While应该是while,并且 会;产生一个无限循环。

另一个问题是你number无论如何都不会改变循环。

于 2013-03-27T20:15:49.530 回答
0

1-

public static void longestName(Scanner sc)

将扫描仪的名称更改为kb,或kb将方法中的 every 更改为sc

2-在 nextXXX 之后使用 nextLine 时查看扫描仪问题

3-使用while代替While,并删除;

于 2013-03-27T20:16:06.330 回答
0

我可以在代码中看到以下问题:

  1. longestName()方法应该使用引用名称sc而不是kb(因为kb仅在main方法中具有范围)
  2. 变量biggestName未声明。它应该被声明为类变量或longestName()方法中的变量,并且应该是类型String
  3. 不是While,它while在小写的情况下是 'w'
  4. while 语句后不应有分号
  5. 在 while 循环结束时,要计算 while 循环要比较的数字,并且当前分配给错误的变量。kb.nextInt()应该分配给变量number而不是number1因为变量number1永远不会被读取/使用。
  6. >运算符不能应用于字符串类型。在该行if (name1.length() > biggestName)中,我们正在比较int并且String将导致编译错误。该行应修改为if (name1.length() > biggestName.length())
  7. 如果您提供的输入不是数字,则方法nextInt()将被抛出。InputMismatchException

现在我觉得我应该像 Joe Elleson 那样编写一个更正的代码。但希望这个答案有帮助。

于 2013-03-27T21:14:25.230 回答