Java 初始化问题?

Java 初始化问题?,java,Java,我试图制作一个程序,让用户输入一个未知的名称值,然后输出输入的最长名称。这是到目前为止我的代码。当我编译时,我有几个错误,它们都是相同的“找不到符号”。我需要初始化这些变量吗?如果需要,在哪里 import java.util.Scanner; public class Name { public static void main(String[] args) { Scanner kb = new Scanner(System.in);

我试图制作一个程序,让用户输入一个未知的名称值,然后输出输入的最长名称。这是到目前为止我的代码。当我编译时,我有几个错误,它们都是相同的“找不到符号”。我需要初始化这些变量吗?如果需要,在哪里

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);

    }
}

您将
扫描仪
传递给
longestName
,但在
longestName
中,您将参数命名为
sc
。在
longestName
中使用
sc
而不是
kb

使用小写的
while
代替
while
;删除
后面的分号,同时
;那里的分号表示这是正文,而不是它下面的
{
}

我假设在while循环的底部,您希望将下一个整数赋给
number
,而不是立即超出范围的新变量
number1

您没有声明什么是
biggestName
(或
name
)。

此处有两个错误:

While (number !=-1); 
While
应该是
While
,而
生成一个无限循环

另一个问题是,您无论如何都不会更改循环中的编号。

1-

public static void longestName(Scanner sc)
将扫描仪名称更改为
kb
,或将方法中的每个
kb
更改为
sc

2-见


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

您的代码中有很多错误。在不详细解释每个错误的情况下,下面是一个修改版本的示例,该版本可以工作:

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);

    }
}

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

  • longestName()
    方法应使用引用名称
    sc
    而不是
    kb
    (因为
    kb
    仅在
    main
    方法中具有作用域)
  • 未声明变量
    biggestName
    。它应该声明为类变量或
    longestName()
    方法中的变量,并且应该是
    String
  • 它不是
    While
    ,而是
    While
    在小写字母中带有“w”
  • while语句后面不应该有分号
  • 在while循环结束时,将计算while循环要比较的数字,该数字当前分配给了错误的变量
    kb.nextInt()
    应分配给变量
    number
    而不是
    number1
    ,因为变量
    number1
    从未被读取/使用
  • 运算符不能应用于字符串类型。在
    if(name1.length()>biggestName)
    行中,我们将
    int
    String
    进行比较,这将导致编译错误。该行应修改为
    if(name1.length()>biggestName.length())
  • 如果您提供的输入不是数字,则方法
    nextInt()
    将导致引发
    inputmaschException
    现在我觉得我应该像Joe Elleson那样编写一个正确的代码。但希望这个答案能有所帮助

    他至少定义了name(
    String name=kb.nextLine()