Warum muss diese Methode static sein ?!

  • Themenstarter Themenstarter javatroll
  • Beginndatum Beginndatum
J

javatroll

Gast
Hi. lerne gerade für eine klausur und hab "zum Spaß" mir ein kleines programm geschreiben was aus einem array, welches mit booleans gefüllt ist eine dezimalzahl berechnet.
Leider verstehe ich nicht warum der compiler mir einen fehler ausgibt wenn ich die binToDez-Methode nicht static mache ?!


Danke für eure hilfe =)

Java:
class Binzudez {

public static void main (String [] args){

int dez=0;
boolean[] bin= new boolean[5];
bin[0]=true;
bin[1]=false;
bin[2]=true;
bin[3]=false;
bin[4]=true;

dez=binToDez(bin);

System.out.println(dez);
}

public static int binToDez(boolean[] binarray ){
	int i=0;
	int zahl=0;
	
	
	for(boolean b : binarray){
		
		i++;
		
		if (b){
		zahl=(int) (zahl+Math.pow(2,i));
		}
		
		}
	return zahl;
	}
	
	}
 
In der main musst du es so schreiben:
Java:
Binzudez b = new Binzudez();
dez = b.binToDez(bin)

Du erstellst dir hier ein Objekt, welches die Methode binToDez besitzt. Deshalb da nicht mehr statisch.
 
hmm aber wnn ich sonst methoden geschrieben habe ( wie getter oder setter methoden) haben sie sich auch immer ohne static aus der main methode aufrufen lassen :/

Java:
import java.util.*;

class GetterSetter {  		



private int var1,var2;

//Settermethoden 

public void setVar1(int var1) {
	this.var1=var1; 
	}
	
public void setVar2(int var2) {
	this.var2=var2; 
	}

	
	//Gettermthode
	
public int getVar1() {
return var1 ; }

public int getVar2() {
return var2 ; }

}


class Test {

 
public static void main(String[]args){
int var;
Scanner scan=new Scanner(System.in);
GetterSetter objekt = new GetterSetter();

System.out.println("Eingabe var1:");
var=scan.nextInt();
objekt.setVar1(var);
System.out.println("Eingabe var2:");
var=scan.nextInt();
objekt.setVar2(var);

System.out.println("Var1:"+objekt.getVar1()+"Var2:"+objekt.getVar2());

}
}
 
hehe ja 😉

hab das Array von der falschen Seite durchgekramt array an der stelle 0 ist ja bei mir der letzte wert also 2^(länge vom array-1) musste das also alles umdrehen 😀

Java:
public int binToDez(boolean[] binarray ){
	int j=0,i=0;
	int zahl=0;
	
	
	for(boolean b : binarray){
		j++;
		i=binarray.length-j;
		if (b){
		zahl=(int) (zahl+Math.pow(2, i ));
		}
		
		}
	return zahl;
	}

hab das jetzt so gelöst
 

Neue Themen


Zurück
Oben