Hjälp med Java tack.
Försöker skapa ett program som utför beräkningen 2^x, alltså 2 upphöjt till ett värde som jag ger skannern. Varje beräkning ska oxå sparas och sedan hämtas så att ej samma beräkning behöver utföras igen, det är detta som jag har problem med:
Hade verkligen uppskattat lite hjälp.
import java.util.HashMap;
public class Model {
HashMap<Integer,Long> memory = new HashMap<Integer,Long>();
Integer value;
Long result;
public long computePower(int value){
if(value <= 0 )
return 1;
else{
return 2 * computePower(value-1);
}
}
private void addValueToMemory(Integer value, Long result){
memory.put(value, result);
}
private Long getValueFromMemory(Integer value){
return memory.get(value);
}
public long compute2Power(int value){
if(value < 0)
throw new IllegalArgumentException();
else if(value >= 0){
return getValueFromMemory(value);
}
else{
return computePower(value);
}
}
public void clearMemory(){
memory.clear();
}
}
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
Model m = new Model();
Scanner s = new Scanner(System.in);
System.out.println("Add a positive number, -1 to clear or -2 to quit");
int input = 0;
while(input != -2){
input = s.nextInt();
if(input == -1){
m.clearMemory();
System.out.println("Memory cleared");
}
else if(input == -2){
m.clearMemory();
System.out.println("Memory cleared");
System.out.println("Program quits");
}
else if(input >= 0){
System.out.println("2^n = " + m.compute2Power(input));
}
else{
try{
System.out.println("Invalid input");
}catch(IllegalArgumentException e){
}
}
}
System.exit(0);
}
}
Här är fellmedelandet:
Exception in thread "main" java.lang.NullPointerException
at Model.compute2Power(Model.java:32)
at Program.main(Program.java:31)
rad 32 i klassen model är: return getValueFromMemory(value);
rad 31 i main klassen Program är :System.out.println("2^n = " + m.compute2Power(input));
Även den här raden: private void addValueToMemory(Integer value, Long result){
memory.put(value, result);
är understruken med texten: The method addValueToMemory(Integer, Long) from the type Model is never used locally .