Java无法返回变量

时间:2015-10-10 03:06:00

标签: java

代码很好,但是当我需要从函数中取出变量并将它们放入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;
    }
}

2 个答案:

答案 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)

您没有调用任何方法,那么您希望它们如何返回某些内容?

要记住两件事:

  1. 只是因为您在方法结束时编写了return s,并不意味着您可以在此方法之外访问s。在java中有一些称为范围的东西,这意味着变量只存在于它所定义的范围内 - 在方法中。如果你想让它存在于外面 - 取回值并用它做点什么。

  2. 声明方法在您实际调用它们之前不会执行任何操作

  3. 因此,为了访问这些变量,您需要执行以下操作:

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