2013-03-27 125 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那樣的正確的代碼。但希望這個答案有幫助。