Zu erst ich weiß, dass das niemand so porgrammieren würde. Es geht mir mehr um die Funktionen als um das Programmierziel. Also bitte mit Bezug auf den Code antworten. Ich will einen String eingeben, der soll als Hexadezimalzahl begriffen werden und dann als Dezimalzahl retour gegeben, also zum Beispiel "FF" und dann 255 zurück bekommen. Dazu verwende ich diesen Code:
Mein erstes Problem ist das mir der Compiler bei
sagt "possible lost of expression, found double, expected int" Wie ist das möglich (den myZahlDezimal[] ist ein int-Arry)? Wenn ich das mit
umgehe (wo ich nicht weiß ob das so passt) kompliert er es mir zwar gibt aber bei Aufruf diese Fehlermeldung aus:
java.lang.NullPointerException
at HexadezimalToDezimal.gueltigerString(HexadezimalToDezimal.java:50)
at HexadezimalToDezimal.<init>(HexadezimalToDezimal.java:25)
Also was mache ich hier falsch? :rtfm:
Java:
public class HexadezimalToDezimal
{
// Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
private String myString;
private char[] myCharArray;
private int[] myZahlDezimal;
private int kontroll;
private int summe;
private boolean pruefsumme;
/**
* Konstruktor für Objekte der Klasse stringtochar
*/
public HexadezimalToDezimal(String hexaZahl)
{
myString=hexaZahl;
myCharArray=myString.toCharArray();
kontroll=0;
if(gueltigerString(myCharArray)==true){
summeBrechnen();
System.out.println("Die Hexadezimalzahl "+hexaZahl+" hat den dezimalen Wert von "+summe+".");
} else {
System.out.println("Ungueltige Eingabe!");
}
}
public boolean gueltigerString(char [] myCharArray2){
for (int i=0;i<myCharArray2.length; i++){
switch (myCharArray2[i]){
case '0': myZahlDezimal[i]=0; break;
case '1': myZahlDezimal[i]=1; break;
case '2': myZahlDezimal[i]=2; break;
case '3': myZahlDezimal[i]=3; break;
case '4': myZahlDezimal[i]=4; break;
case '5': myZahlDezimal[i]=5; break;
case '6': myZahlDezimal[i]=6; break;
case '7': myZahlDezimal[i]=7; break;
case '8': myZahlDezimal[i]=8; break;
case '9': myZahlDezimal[i]=9; break;
case 'A': myZahlDezimal[i]=10; break;
case 'a': myZahlDezimal[i]=10; break;
case 'B': myZahlDezimal[i]=11; break;
case 'b': myZahlDezimal[i]=11; break;
case 'C': myZahlDezimal[i]=12; break;
case 'c': myZahlDezimal[i]=12; break;
case 'D': myZahlDezimal[i]=13; break;
case 'd': myZahlDezimal[i]=13; break;
case 'E': myZahlDezimal[i]=14; break;
case 'e': myZahlDezimal[i]=14; break;
case 'F': myZahlDezimal[i]=15; break;
case 'f': myZahlDezimal[i]=15; break;
default: kontroll=-1; break;
}
}
if (kontroll==-1){
return false;
} else {
return true;
}
}
public void summeBrechnen(){
for (int i=0;i<myZahlDezimal.length; i++){
summe=summe+Math.pow(myZahlDezimal[i],i);
}
}
}
Java:
... Math.pow(myZahlDezimal[i],i);
Java:
... (myZahlDezimal[i]^i);
java.lang.NullPointerException
at HexadezimalToDezimal.gueltigerString(HexadezimalToDezimal.java:50)
at HexadezimalToDezimal.<init>(HexadezimalToDezimal.java:25)
Also was mache ich hier falsch? :rtfm:
Zuletzt bearbeitet von einem Moderator: