预期的标识符,Java

时间:2015-10-07 18:19:06

标签: java

我正在尝试为分配调试这个简单的应用程序,但我不确定它为什么不能编译...

import java.util.Scanner;
public class DebugThree3
{
   public static void main(String[] args)
   {
      String name;
      getName();
      displayGreeting(name);
   }

   public String getName(name)
   {
      Scanner input = new Scanner(System.in);
      System.out.print("Enter name: ");
      name = input.nextLine();
      return name;
   }

   public static void displayGreeting()
   {
      System.out.println("Hello, " + name + "!");
   }
}

尝试编译告诉我第12行需要一个标识符,public String getName(name)。谁能告诉我我在这里缺少什么?

由于

2 个答案:

答案 0 :(得分:0)

您需要指定方法接受的参数的Type

public String getName(String name)
   {
      Scanner input = new Scanner(System.in);
      System.out.print("Enter name: ");
      name = input.nextLine();
      return name;
   }

将参数传递给getname函数中的main函数。

与SURESH指出的一样,getname函数需要标记为static。否则,在访问其中的方法之前,您需要创建该类的对象。

答案 1 :(得分:0)

我冒昧地以两种标准的方式来修复你的程序。

目前您还没有传递name,并且您可能认为它存在于不存在的范围内。

我还在:

中移动了多余的put-something-in-a-parameter-and-return行为
String name = input.nextLine()
return name;

只剩下了:

return input.nextLine();

第一种方法是在函数之间传递name作为参数,指定其类型

import java.util.Scanner;
public class DebugThree3
{
   public static void main(String[] args)
   {
      String name = getName();
      displayGreeting(name);
   }

   public String getName()
   {
      Scanner input = new Scanner(System.in);
      System.out.print("Enter name: ");
      return input.nextLine();
   }

   public static void displayGreeting(String name)
   {
      System.out.println("Hello, " + name + "!");
   }
}

第二种方法是将name作为静态类成员:

import java.util.Scanner;
public class DebugThree3
{

   String name;

   public static void main(String[] args)
   {
      getName();
      displayGreeting();
   }

   public String getName()
   {
      Scanner input = new Scanner(System.in);
      System.out.print("Enter name: ");
      DebugThree3.name = input.nextLine();
   }

   public static void displayGreeting()
   {
      System.out.println("Hello, " + DebugThree3.name + "!");
   }
}