Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从main、java访问变量_Java_Jvm - Fatal编程技术网

如何从main、java访问变量

如何从main、java访问变量,java,jvm,Java,Jvm,我在尝试使HashMap可供其所在类中的其他方法访问时遇到困难 这就是我想做的 class object method main this.test=9 method fire output this.test 这是真正的代码 import java.util.*; import java.lang.String; import java.util.HashMap; public class problem { public HashM

我在尝试使HashMap可供其所在类中的其他方法访问时遇到困难

这就是我想做的

class object
    method main
        this.test=9
    method fire
        output this.test
这是真正的代码

import java.util.*;
import java.lang.String;
import java.util.HashMap;

public class problem {
    public HashMap dict;

    public problem() {
        HashMap<String, String[]> dict = new HashMap<String, String[]>();

        // put everything into hashmap
        String[] items = { "toys", "sun" };
        dict.put("animal", items);
        String[] items_2 = { "fun", "games" };
        view.put("human", items_2);

        this.view = view;

        // start
        this.BeginM();
    }

    public void BeginM() {
        System.out.println(this.view.get("human")[0]); // should give "fun"
    }
}

我相信this.view.gethuman会返回字符串,而不是数组。您需要使用this.view.gethuman.charAt0而不是this.view.gethuman[0],因为Java字符串不能像数组那样被索引。

更改:顺便说一句,示例中缺少了

Map view = new HashMap<String,String[])


你知道吗?我曾经有过这样的一段日子,不管你怎么努力,都没有什么能正常工作,所以,为了让某些东西真正正常工作,我要修改你的代码

我有时看到人们在这里完全重写了一些奇怪的问题,我一直想知道为什么!?现在我知道了,这是为了补偿有一天你的一个虚拟机无缘无故地崩溃,你有一个无法复制的bug,直到你把目光移开,你的狗忘记了自己的家庭训练

无论如何,您需要弄清楚是否希望将该变量称为dict或view。选择一个,但你需要坚持下去。我真的不在乎,但我用的是dict。如果你喜欢另一个,嘿,这是你的代码,做你喜欢的!但不要两者都用,那样会让人困惑

你的问题是,在你的领域,你只是在使用HashMap。使用精美的字体或演员。否则,HashMap只保存对象。对象不是字符串[]。因此,您要么需要将get to String[]的结果强制转换为一个字符串[],要么您可以忘记所有这些,使用奇特的类型良好的东西,有时我们称之为泛型。我将使用别致的类型良好的HashMap,但正如我所说的——这是你的代码,如果你想的话,可以强制转换

无论如何,这让我们能够:

public class problem
{
    HashMap<String, String[]> dict;

    public problem()
    {
        HashMap<String, String[]> dict = new HashMap<String, String[]>();

        // put everything into hashmap
        String[] items =
        {
            "toys", "sun"
        };
        dict.put("animal", items);
        String[] items_2 =
        {
            "fun", "games"
        };
        dict.put("human", items_2);

        this.dict = dict;

        // start
        this.BeginM();
    }

    public void BeginM()
    {
        System.out.println(this.dict.get("human")[0]); // should give "fun"
    }
}

那我在那里做了什么?首先,我把这个问题大写。类名以大写字母开头是一种惯例。当然,这不是强制性的,但拥有它很好,特别是当你与其他开发人员合作时。举个例子:我认为问题的构造函数是一个缺少返回值的方法!另外,我将dict设置为final和private,这样以后就不会意外地覆盖该字段。我把它做成了私人的,这是一个很好的设计。如果其他人需要访问它,我们可以给他们一个访问器方法。最后,我摆脱了这个,因为我不太喜欢它-但是,嘿,还是你的代码,如果你想放回去的话

有趣的巧合-你漏掉了导致问题的代码行。恰克,他没有漏掉任何东西。但是,上面的内容不会被编译是正确的。我喜欢编辑流,这会让这个问题变得不那么可读。我不认为this.view.gethuman可以返回任何内容,因为this.view在任何地方都没有定义。但是我认为其目的是,尽管我承认,很难说是有一个HashMap,这意味着是的,view.gethuman将返回一个数组。view被暗示为HashMap,因为他访问它的方式。get是在Map类中定义的。我认为编译器不会因为隐含而自动创建变量。如果是这样的话,我需要开始使用它。我不是说他的代码可以编译。我只是说我们可以推断变量数据类型。我更关注于描述语法错误,而不是他混乱的结构。我明白了。我同意我们可以推断它,我建议作者打算使用HashMap,这将使gethuman[0]完全合法。是的,我知道它没有编译,并且我知道特定的错误是由于类型Map的var上缺少泛型造成的。这孩子只是想学习Java,他需要一点指导。缺少地图上的类型只会在代码中出现一些警告,而不是错误。他的问题是关于变量的名称和主函数,他还没有公布。@LuiggiMendoza-不是corret。对于他的用法map.getx[0],缺少的泛型会导致编译错误。表达式的类型必须是数组类型,但已解析为Object。试试看。@ChuckFricano在这里显然是正确的。非泛型HashMap相当于HashMap,因此需要强制转换。@LuiggiMendoza-我的解决方案是正确的。可能还有其他的。在这种情况下,缺少的泛型会导致错误,而不是警告,正确使用泛型可以纠正问题。铸造是不安全的。这就是泛型被添加到Java中的原因。+1,因为你度过了艰难的一天,这是对一个格式不好的问题的一个不错的回答。哇,太棒了,我很高兴我得到了一个解释得很好的答案,谢谢@保瓦格兰:谢谢!我最初的评论毫无用处,因此我决定可能应该忏悔并写一个恰当的答案。
Map<String,String[]> view = new HashMap<String,String[])
public class problem
{
    HashMap<String, String[]> dict;

    public problem()
    {
        HashMap<String, String[]> dict = new HashMap<String, String[]>();

        // put everything into hashmap
        String[] items =
        {
            "toys", "sun"
        };
        dict.put("animal", items);
        String[] items_2 =
        {
            "fun", "games"
        };
        dict.put("human", items_2);

        this.dict = dict;

        // start
        this.BeginM();
    }

    public void BeginM()
    {
        System.out.println(this.dict.get("human")[0]); // should give "fun"
    }
}
public class Problem
{
    private final HashMap<String, String[]> dict;

    public void Problem()
    {
        dict = new HashMap<String, String[]>();

        dict.put("animal", new String[] { "toys, "sun" });
        dict.put("human", new String[] { "fun", "games" });

        BeginM();
    }

    public void BeginM()
    {
        System.out.println(dict.get("human")[0]);
    }
}