import java.util.Scanner;
public class V1_1 {
public static void main(String[] args) {
Scanner UIS = new Scanner(System.in);
System.out.print("Hello!");
System.out.println(" What is my name?");
String MyName = UIS.nextLine();
while(true){
String a1 = UIS.nextLine();
execute(a1);
}
}
public static void execute(String a1) {
Scanner UIS = new Scanner(System.in);
switch(a1) {
case "Hello":
System.out.println(" Hello!");
break;
case "What is your name?":
System.out.println("My name is " + MyName + )
case "SHUTDOWN":
System.out.print(" Goodbye...");
System.exit(0);
break;
default :
System.out.println(" I don't understand...");
}
}
}
当我尝试编译此代码时,我收到一条错误,指出它找不到符号MyName,即使它之前已命名。我是java的新手(昨晚),所以任何帮助都会很棒。谢谢!
答案 0 :(得分:0)
在确切的情况下,您有...要使 MyName 本地变量一次可以通过两种方法访问,您可以将其封装或将 MyName 声明为字段;
声明为字段示例:
private static String MyName;//do declare as a field
public class V1_1 {
public static void main(String[] args) {
Scanner UIS = new Scanner(System.in);
System.out.print("Hello!");
System.out.println(" What is my name?");
MyName = UIS.nextLine();//<--do not declare but init only
while(true){
String a1 = UIS.nextLine();
execute(a1);
}
}
public static void execute(String a1) {
Scanner UIS = new Scanner(System.in);
switch(a1) {
case "Hello":
System.out.println(" Hello!");
break;
case "What is your name?":
System.out.println("My name is " + MyName + )
case "SHUTDOWN":
System.out.print(" Goodbye...");
System.exit(0);
break;
default :
System.out.println(" I don't understand...");
}
}
}
P.S。我将字段 MyName 声明为静态因为&#34;非静态变量无法从静态上下文引用&#34;
无论如何,请仔细阅读教程:)
如果您有更多详情,请发表评论
祝你好运:)答案 1 :(得分:0)
欢迎来到SO!
首先,代码不尽如人意。就个人而言,我会将所有案例分成他们自己的方法。
其次,你应该为这个类选择一个更好的名字,最好是名词,你不应该让所有方法都是静态的。在大多数情况下,应避免使用static关键字。
出于以下代码的目的,我将假设该类名为Thingy(可以使用更好的名称进行编辑)。
要使用非静态方法,必须先使用代码段Thingy thing = new Thingy();
该代码片段创建一个名为thingy的Thingy引用变量,并将其初始化为Thingy对象的新实例。
这样,您就可以通过在方法之外插入String MyName;
来声明实例变量,并且能够在所有非静态方法中访问它。
要在main中访问它,在声明了Thingy对象后,使用thing.MyName访问引用变量IN MAIN,例如: thing.MyName = UIS.nextLine();
在非静态方法中,可以像局部变量一样访问所有实例变量,例如: MyName = "Chris";
对于比我更好的人的建议,请阅读官方教程。