【问题标题】:Passing the variable from one class to another将变量从一个类传递到另一个类
【发布时间】:2013-02-08 09:12:36
【问题描述】:

大家好,我目前正在创建一个简单的程序。我有 2 个类,第一个是 SampleReturn,第二个是 GetValues。我想要发生的是,当我在 GetValues 类中输入一个名称时,我输入的名称将存储在一个变量中,稍后将由 SampleReturn 类用于显示该名称。不幸的是,我无法运行该程序,因为它有一个错误。下面的代码请帮助我解决这个问题。我只是自学我真的很想学习Java。谢谢! :)

GetValues 类中的代码:

import java.util.Scanner;
public class GetValues{
    Scanner inp = new Scanner(System.in);

    public static void wew(){
        System.out.println("Enter name: ");
        String a = inp.nextLine();

        private static String z = a;

        public static String kuhaName(){
            return z;
        }
    }
}

SampleReturn 中的代码:

import java.util.Scanner;
    public class SampleReturn{
        public static void main(String[]args){

        String nameMo = GetValues.kuhaName();

        System.out.print("Your name is: " +nameMo);
    }
}

【问题讨论】:

  • 检查您的代码。您尚未使用花括号 } 关闭 wew() 方法体@
  • 它在 private static String z = a; 行中表示非法的表达式开始

标签: java class variables


【解决方案1】:

首先想到的是wew 方法没有结束大括号}

你也不能在你的方法中声明一个字段。你可能想在wew 方法之外声明private static String z


我已经阅读了你的作业,虽然我不会完全为你做作业,但我可以就你的程序架构给你一些建议。

首先我会创建一个名为Person 的类。你可以随意调用你的类,但在本文的其余部分,我将把这个类称为Person 类。

现在你会希望你的班级有:

  • 用于存储namePerson 的字段
  • 一种从用户那里获取输入并将其放入name 字段的方法。
  • 一种打印name 字段内容的方法。

在你的 main 方法中你会想要

  • 实例化你的Person
  • 称之为输入获取方法
  • 称之为打印方法。

【讨论】:

  • 我该怎么做?我完全是新手先生,请您给我答案吗?
  • @AngelCasiMontoya 好吧,您的实际要求是什么?你的程序实际上应该做什么?
  • 就像我刚才所说的,当用户在 GetValues 类中输入一个名称时,该名称将存储在一个变量中,并由 SampleReturn 类使用来显示名称
  • @AngelCasiMontoya 这是实现细节。您甚至不需要额外的类来从命令行读取输入。你真正的需求是什么?
  • 什么要求?先生,您能具体说明一下吗?
【解决方案2】:

您在这段代码中遇到了一些问题。

首先,你不能在另一个方法中拥有一个方法。其次,您永远不会调用wew,它实际上会读取输入。假设你的意思是这样的:

public class GetValues{
    Scanner inp = new Scanner(System.in);
    private static String z;

    public static void wew(){
        System.out.println("Enter name: ");
        String a = inp.nextLine();

        z = a;
    }

    public static String kuhaName(){
        return z;
    }
}

您现在要做的就是按顺序调用您的方法。

【讨论】:

    【解决方案3】:

    你的代码应该是这样的:

    import java.util.Scanner;
    
    public class GetValues
    {
        private static Scanner inp = new Scanner(System.in);
        private static String z = "";
        public static void wew()
        {
            System.out.println("Enter name: ");
            String a = inp.nextLine();
            z = a;
        }
        public static String kuhaName()
        {
            return z;
        }
    }
    

    然后SampleRun.java应该是这样的:

    //import java.util.Scanner;//no need to import
    public class SampleReturn
    {
        public static void main(String[] args)
        {
            GetValues.wew();//First input the name .
            String nameMo = GetValues.kuhaName();//Retrieve the name
            System.out.print("Your name is: " +nameMo);//Display the name
        }
    }
    

    【讨论】:

    • private static String z = a; 行有错误它说找不到符号变量 a
    • 我的错误....错过了那一行。 a 是方法 wew() 中的局部变量,因此无法将 a 的值分配给方法外的 z。查看我的更新。
    • String a = inp.nextLine(); 行中还有另一个错误先生它说不能从静态上下文中引用非静态变量 inp
    • 扫描仪对象inp 应声明为静态,因为无法从静态方法调用non-static 变量..
    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多