代码很好,但是当我需要从函数中取出变量并将它们放入public static void时,它表示无法找到变量。有谁知道如何解决这个问题?
import java.util.*;
public class Greetings {
public static void main(String[] args) {
System.out.println("Greetings, " + String(s) + ". " +
String(j) +"!" + " You are about " + int(z) + " years old");
}
public static String fNameGenerator(String s){
Scanner scan1 = new Scanner(System.in);
System.out.println("Please enter your first name: ");
String first = scan1.next();
s = first.substring(0,1).toUpperCase();
return s;
}
public static String LastName(String j){
Scanner scan2 = new Scanner(System.in);
System.out.println("Please enter you last name: ");
String second = scan2.next();
int x = second.length();
String y = second.substring(0, x).toLowerCase();
j = y.substring(0,1).toUpperCase();
return j;
}
public static int age(int z){
Scanner scan3 = new Scanner(System.in);
System.out.println("Please enter your year of birth: ");
int third = scan3.nextInt();
z = (2015 - third);
return z;
}
}
答案 0 :(得分:0)
您的代码中存在编译错误
System.out.println("Greetings, " + String(s) + ". " + String(j) +"!" +" You are about " + int(z) + " years old");
如果您尝试调用这些方法,请替换
String(s) --> fNameGenerator(s)
String(j) --> LastName(j)
int(z) --> age(z)
将s,j,z作为局部变量或静态成员。
或删除传递给方法的参数,因为您正在从扫描仪获取输入
答案 1 :(得分:0)
您没有调用任何方法,那么您希望它们如何返回某些内容?
要记住两件事:
只是因为您在方法结束时编写了return s
,并不意味着您可以在此方法之外访问s
。在java中有一些称为范围的东西,这意味着变量只存在于它所定义的范围内 - 在方法中。如果你想让它存在于外面 - 取回值并用它做点什么。
声明方法在您实际调用它们之前不会执行任何操作
因此,为了访问这些变量,您需要执行以下操作:
public static void main(String[] args) {
String s = fNameGenerator();
String j = LastName();
int z = age();
System.out.println("Greetings, " + s + ". " + j +"!" +" You are about " + z + " years old");
}
你还可以看到我在那里做了一件事 - 你不需要将任何东西传递给你的方法,因为你在重新设置之前没有对给定的值做任何事情。只要确保你声明里面的字段。例如,您的年龄方法应如下所示:
public static int age(){
Scanner scan3 = new Scanner(System.in);
System.out.println("Please enter your year of birth: ");
int third = scan3.nextInt();
int z = (2015 - third);
return z;
}