我正在尝试创建一个类,我将一个键和值放入put方法,该方法将键放入k字符串数组并将值放入v字符串数组中,但是当我将其保存在数组中时得到或显示。
例如:put(dan,30)get(dan)返回null
display返回null null 10次。有谁知道什么是错的?
public class Memory
{
final int INITIAL_CAPACITY = 10;
String[] k = new String[INITIAL_CAPACITY];
String[] v = new String[INITIAL_CAPACITY];
int count = 0;
public Memory()
{
count = 0;
}
public int size()
{
return count;
}
public void put(String key, String value)
{
int a = 0;
boolean found = false;
for (int i = 0; i < k.length; i++)
{
//System.out.println("key is " + key.equals(k[i]));
if (key.equalsIgnoreCase(k[i]))
{
v[i] = value;
found = true;
}
if (found)
break;
a++;
}
//System.out.println(a == k.length);
if (a == k.length);
{
k[count] = key;
v[count] = value;
//System.out.println(k[count] + " " + v[count]);
count++;
//System.out.println(count);
}
}
public String get(String key)
{
String output = "a";
for(int i = 0; i < k.length; i++)
{
if(!key.equalsIgnoreCase(k[i]))
{
output = null;
}
else
{
output = v[i];
return output;
}
}
return output;
}
public void clear()
{
for (int i = 0; i < k.length; i++)
{
k[i] = null;
v[i] = null;
}
count = 0;
}
public void display()
{
for (int i = 0; i < k.length; i++)
{
System.out.println(k[i] + " " + v[i]);
}
}
}
答案 0 :(得分:1)
if (a == k.length);
删除分号,否则它总是运行下面的块
我希望这只是一项研究,因为你应该只使用Map而不是自己实现。你的算法也很差。对于put和get都是O(n)性能。你可以做得更好,比如O(log n)
答案 1 :(得分:0)
您的代码对我有用。
刚开始:
public static void main(String args[]){
Memory newMem = new Memory();
newMem.put("Dan", "30");
System.out.println(newMem.get("Dan"));
}
输出为“30”
您的代码在创建/放置/获取时的外观是什么?
答案 2 :(得分:0)
while(true)
{
Scanner kb = new Scanner(System.in);
Memory m = new Memory();
...
每次循环时,您都在创建一个新的Memory对象,而不是更新对现有对象的引用。