Superhjälte java
So the assaignment is this:
There should be a method for calculating and returning total charges that the superhero has left in his superweapons.
This is supposed to return a string so I'm guessing I need to use
` `Public void totalAntalLaddningar(SuperVapen superVapenNamn, string SuperHjalteNamn, int totalAntalLaddningar)
`{
`System.out.println("Hjälten" + SuperHjalteNamn.getNamn() + "har" ` `ettSuperVapen.getTotalAntalLaddningar() + "laddningar kvar")}`
`
But this isn't enough and it doesn't work properly
can somebody please help
There is a similar question in this assignment which says:
There should be a method for calculating and returning total charges that the superhero has left in his superweapons and it should return an int.
The code which I have written for this is:
public int skrivUtAntalLaddningar()
{
int sumSuperVapen = 0;
for (SuperVapen ettSuperVapen : vapenLista)
{
sumSuperVapen +=public int skrivUtAntalLaddningar()
{
int sumSuperVapen = 0;
for (SuperVapen ettSuperVapen : vapenLista)
{
sumSuperVapen +=ettSuperVapen.getAntalLaddningar();
}
return sumSuperVapen;
}
;
}
return sumSuperVapen;
}
It seems like the code is written in Swedish, but the assignment prompt is in English. Do you speak Swedish or only English? My first suggestion would be to use our "insert code" tool, which is represented by the {:} icon. This tool will preserve the code's indentation, making it easier to read and understand. Additionally, please provide more details about what exactly is not working properly.
Well the assignment is in swedish so if you prefer I could write in swedish but I wrote this in english. Well it says undeclared method for getNamn and Undeclared variable for ettSuperVapenNamn. So I can't run it
The following code: "System.out.println("Hjälten" + SuperHjalteNamn.getNamn() + "har" ettSuperVapen.getTotalAntalLaddningar() + "laddningar kvar")}" will result in a compilation error. This is because you are trying to call a function "getNamn()", which is not a valid function of the String API. From what I can tell, you are trying to access the value of the string variable SuperHjalteNamn, so you only need to concatenate it with the other strings.
Regarding your second error, it appears that you are attempting to access a non-static object. In this case, since it is not a local variable, you should use the 'this' keyword to access it, provided that you have instantiated it in the constructor.
If you want more help, please provide all of the code using the tool I mentioned earlier.
import java.util.ArrayList;
public class SuperHjalte
{
private ArrayList<SuperVapen> vapenLista;
private String superHjalteNamn;
public void SuperHjalte()
{
vapenLista = new ArrayList<SuperVapen>();
}
public void angeSuperHjalteNamn(String ettNamn)
{
superHjalteNamn = ettNamn;
}
public void laggTillSuperVapen(SuperVapen ettSuperVapen)
{
vapenLista.add(ettSuperVapen);
}
public void laggTillVapenMedKontroll(SuperVapen SuperVapenNamn)
{
for(SuperVapen ettSuperVapen: vapenLista) {
if(ettSuperVapen.getNamn().equals(SuperVapenNamn.getNamn()))
{
System.out.println("Superhjälten har redan ett supervapen med namnet: "+SuperVapenNamn.getNamn());
return;
}
}
vapenLista.add(SuperVapenNamn);
System.out.println("Ett nytt supervapen har registreras för superhjälten");
}
public void anvandSuperVapen(String VapenNamn, int antalLaddningar)
{
SuperVapen vapen = null;
for (SuperVapen ettSuperVapen : vapenLista)
{
if(ettSuperVapen.getNamn().equals(VapenNamn))
{
vapen = ettSuperVapen;
break;
}
}
// den här delen behövs teckniskt sett inte
if(vapen == null)
{
System.out.println("Okänd super vapen:" + VapenNamn);
return;
}
//here we'll check if there are enough charges
if(vapen.getAntalLaddningar() < antalLaddningar)
{
System.out.println("Det fanns inte tillräckligt antal laddningar kvar,försök med ett annat supervapen iställe");
return;
}
//här använder vi vapnet och minskar antal Laddningar
vapen.use(antalLaddningar);
System.out.println("Supervapen har använts och det finns nu" + vapen.getAntalLaddningar() + "kvar");
}
public void listaAllSuperVapenInfo()
{
for(SuperVapen ettSuperVapen : vapenLista)
{
System.out.println(ettSuperVapen.getNamn()+ ", " + ettSuperVapen.getAntalLaddningar());
}
}
/**public static void berakna(String SuperVapenNamn, int antalLaddningar)
*{
* berakna("Antal Laddningar")
*
*
*
* nummer 4
*/
public void totalAntalLaddningar(SuperVapen superVapenNamn, String SuperHjalteNamn, int totalAntalLaddningar)
{
System.out.println("Hjälten" + SuperHjalteNamn.getNamn() + "har" + ettSuperVapen.getTotalAntalLaddningar() + "laddningar kvar");
}
public int skrivUtAntalLaddningar()
{
int sumSuperVapen = 0;
for (SuperVapen ettSuperVapen : vapenLista)
{
sumSuperVapen +=ettSuperVapen.getAntalLaddningar();
}
return sumSuperVapen;
}
// detta ska vara 5 alltså
}
this is the code and I have a problem in vapen.use(antalLaddningar);
it says that it is an undeclared method and that I should use int which I have tried but it wont work.
and for the previous errors I don't have 'this' declared becuase the SuperVapen refers back to another code /class which is this
public class SuperVapen
{
// instance variables - replace the example below with your own
private String superVapenNamn;
private int antalLaddningar;
/**
* Constructor for objects of class SuperVapen
*/
public SuperVapen(String superVapenNamn, int antalLaddningar)
{
// initialise instance variables
this.superVapenNamn = superVapenNamn;
this.antalLaddningar = antalLaddningar;
}
public String getNamn()
{
// put your code here
return superVapenNamn;
}
public int getAntalLaddningar()
{
// put your code here
return antalLaddningar;
}
public void anvandSuperVapen()
{
// put your code here
antalLaddningar = antalLaddningar - 1;
}
}
I have not conducted a thorough analysis of your code, but it appears that there is significant room for improvement. However, regarding the specific problem you mentioned, it seems like you are attempting to call functions that do not exist. In my modifications, I have replaced those calls with what I believe are the correct functions. If this is not the case, please provide more information about what your code is trying to accomplish and what it is actually doing. This modified code should compile without errors, but whether it achieves the desired behavior or not is uncertain.
import java.util.ArrayList;
public class SuperHjalte
{
private ArrayList<SuperVapen> vapenLista;
private String superHjalteNamn;
public void SuperHjalte()
{
vapenLista = new ArrayList<SuperVapen>();
}
public void angeSuperHjalteNamn(String ettNamn)
{
superHjalteNamn = ettNamn;
}
public void laggTillSuperVapen(SuperVapen ettSuperVapen)
{
vapenLista.add(ettSuperVapen);
}
public void laggTillVapenMedKontroll(SuperVapen SuperVapenNamn)
{
for(SuperVapen ettSuperVapen: vapenLista) {
if(ettSuperVapen.getNamn().equals(SuperVapenNamn.getNamn()))
{
System.out.println("Superhjälten har redan ett supervapen med namnet: "+SuperVapenNamn.getNamn());
return;
}
}
vapenLista.add(SuperVapenNamn);
System.out.println("Ett nytt supervapen har registreras för superhjälten");
}
public void anvandSuperVapen(String VapenNamn, int antalLaddningar)
{
SuperVapen vapen = null;
for (SuperVapen ettSuperVapen : vapenLista)
{
if(ettSuperVapen.getNamn().equals(VapenNamn))
{
vapen = ettSuperVapen;
break;
}
}
// den här delen behövs teckniskt sett inte
if(vapen == null)
{
System.out.println("Okänd super vapen:" + VapenNamn);
return;
}
//here we'll check if there are enough charges
if(vapen.getAntalLaddningar() < antalLaddningar)
{
System.out.println("Det fanns inte tillräckligt antal laddningar kvar,försök med ett annat supervapen iställe");
return;
}
//här använder vi vapnet och minskar antal Laddningar
vapen.anvandSuperVapen();
System.out.println("Supervapen har använts och det finns nu" + vapen.getAntalLaddningar() + "kvar");
}
public void listaAllSuperVapenInfo()
{
for(SuperVapen ettSuperVapen : vapenLista)
{
System.out.println(ettSuperVapen.getNamn()+ ", " + ettSuperVapen.getAntalLaddningar());
}
}
/**public static void berakna(String SuperVapenNamn, int antalLaddningar)
*{
* berakna("Antal Laddningar")
*
*
*
* nummer 4
*/
public void totalAntalLaddningar(SuperVapen superVapenNamn, String SuperHjalteNamn)
{
System.out.println("Hjälten" + SuperHjalteNamn + "har" + superVapenNamn.getAntalLaddningar() + "laddningar kvar");
}
public int skrivUtAntalLaddningar()
{
int sumSuperVapen = 0;
for (SuperVapen ettSuperVapen : vapenLista)
{
sumSuperVapen +=ettSuperVapen.getAntalLaddningar();
}
return sumSuperVapen;
}
// detta ska vara 5 alltså
}
Thank you so much
It does infact not do what it is supposed to do lol
If you try to create an instance of the SuperHjalte class, the ArrayList will always be null because the constructor is not defined properly. Without a proper constructor, the vapenLista field will not be initialized, and attempting to add a SuperVapen object to it using the laggTillSuperVapen method will result in a null pointer exception.
What do you expect the output of this code to be based on your understanding, and what do you predict the actual output will be? Please answer this question without referring to the code itself. Once you have answered the question, you can then run the code to verify your prediction. Note, do this after you have fixed the issue with your constructor.
public static void main(String[] args) {
SuperHjalte sp = new SuperHjalte();
SuperVapen v1 = new SuperVapen("v1", 19);
sp.laggTillSuperVapen(v1);
sp.anvandSuperVapen(v1.getNamn(), 5);
System.out.println(v1.getAntalLaddningar());
}