我想使用“put”将元素添加到hashmap中。但该程序不想编译。我收到错误消息“无法找到符号 - 可变phoneBook”。错误发生在“ phoneBook.put(name,number); ”。
行import java.util.HashMap;
public class MapTester {
public void main(String args[]){
HashMap<String, String> phoneBook = new HashMap<String, String>();
phoneBook.put("Jenna Simpson", "3424 6785");
}
public void enterNumber (String name, String number)
{
phoneBook.put(name, number);
}
}
答案 0 :(得分:0)
电话簿在enterNumber中遥不可及。它没有可见性。将其作为参数传递。
public void enterNumber (Map<String, String> phoneBook, String name, String number)
{
phoneBook.put(name, number);
}
答案 1 :(得分:0)
您必须在主要内容和类定义下面声明phoneBook对象,或者将phoneBook作为参数传递给enterNumber函数:
public void enterNumber (HashMap<String, String> phoneBook, String name, String number) {
...
}
答案 2 :(得分:0)
这是因为方法enterNumber
无法访问变量phoneBook。
您必须将其声明为此实例变量
import java.util.HashMap;
public class MapTester{
HashMap<String, String> phoneBook = new HashMap<String, String>();
public void main(String args[]){
MapTester tester = new MapTester();
tester.enterNumber("Jenna Simpson", "3424 6785");
}
public void enterNumber (String name, String number)
{
phoneBook.put(name, number);
}
}
此外,您还必须创建Maptester类的对象。因为除非方法是静态的,否则不能直接从main方法调用方法enterNumber
。如果方法声明为static,那么map也应该是一个静态变量。
答案 3 :(得分:0)
我将其修改为以下内容;它现在符合。感谢你们!
import java.util.HashMap;
public class MapTester{
HashMap<String, String> phoneBook = new HashMap<String, String>();
public void main(String args[])
{
phoneBook.put("Jenna Simpson", "3424 6785");
}
public void enterNumber (String name, String number)
{
phoneBook.put(name, number);
}
}
答案 4 :(得分:0)
花一些时间来阅读有关java中变量作用域的本教程。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html
public class MapTester {
private Map<String, String> phoneBook = new HashMap<String, String>();
public static void main(String[] args) {
MapTester tester = new MapTester();
tester.enterNumber("Jenna Simpson", "3424 6785");
}
public void enterNumber (String name, String number)
{
phoneBook.put(name, number);
}
}