2013-03-27 216 views
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); 

    } 
} 

回答

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

    } 
} 
1

你在你的ScannerlongestName过去了,但在longestName,你命名的参数sc。使用sc代替longestName中的kb

使用小写字母while而不是While;删除while后面的分号;分号存在意味着是正文,而不是其下面的{}块。

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

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

+0

他至少定义了名称('String name = kb.nextLine()') – 2013-03-27 20:50:01

0

两个错误的位置:

While (number !=-1); 

Whilewhile;使一个无限循环。

而另一个问题是,你不会改变循环中的number

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),我们正在比较intString并将导致编译错误。该行应修改为if (name1.length() > biggestName.length())
  7. 方法nextInt()将导致InputMismatchException被抛出,如果您提供的输入不是数字。

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