Erste Schritte Methode aus anderer Klasse verwenden

lorenlai

Mitglied
Hallo zusammen,

ich habe folgende Frage bitte. :)
Ich habe 2 Klassen (siehe unten) ...

Im 1. Klasse lasse ich meine recording Selenium Test laufen (Datensatz in mySQL einfügen).
Im 2. Klasse lese ich aus dem Excelsheet die Daten raus und speichere das in einer Arrayfeld (data).

Frage: Wie kann ich dieser Array (data) in meiner 1. Klasse verwenden/aufrufen?
Ich will nämlich an der Stelle ...sendKeys("XXXXX") die Daten aus dem Arrayfeld befüllen, solange bis es keine mehr gibt.
Wie mache ich das ? Kann jemand mir ein Beispiel machen bitte?


1. Klasse
public class SeleniumTestDemoAddUser {

...
@Test
public void testSeleniumTestDemoAddUser() throws Exception {
driver.get("http://localhost/ocelintest/db_abfrage.php");
driver.findElement(By.linkText("Daten einfuegen")).click();

//will hier "data" einsetzen, ein loop machen, bis Array zu Ende geht :)
driver.findElement(By.name("myNachname")).clear();
driver.findElement(By.name("myNachname")).sendKeys("Maier");
driver.findElement(By.name("myVorname")).clear();
driver.findElement(By.name("myVorname")).sendKeys("Hans");
driver.findElement(By.name("myStrasse")).clear();
driver.findElement(By.name("myStrasse")).sendKeys("Musterstr.");
driver.findElement(By.name("myWohnort")).clear();
driver.findElement(By.name("myWohnort")).sendKeys("60325");
driver.findElement(By.name("insertButton")).click();

...
}
}

2. Klasse
public class ExcelRead
{
public static void main( String[] args )
{
Workbook wb = null;

...


int rowNum = sheet.getLastRowNum() + 1;
int colNum = sheet.getRow(0).getLastCellNum();
String [][] data = new String [rowNum] [colNum];

for(int i = 1; i <rowNum; i++){
Row row = sheet.getRow(i);
for (int j = 0; j < colNum; j++){
Cell cell = row.getCell(j);
String value = cell.toString();
data[j] = value;
System.out.println (data[j]);

//Ergebnis sieht dann ungefähr so aus
Maier
Hans
Musterstr.
Frankfurt
Conzelmann
Axel
Ludwigstr.
Bonn
Matzad
Rebecca
Hohlstr.
Mannheim
}
}
}
 

VfL_Freak

Top Contributor
Java™ Quelltext ist bitte in
Java:
-Tags zu schreiben: [ JAVA ]hier Java Code einfügen[ /JAVA ][/B][/COLOR]

Steht doch groß genug über dem Editor .... :autsch:

Gruß
Klaus
 

kaoZ

Top Contributor
Irgendwie finde es doch immer wieder erstaunlich wie Java Anfänger ohne irgendwelche Grundlagen direkt versuchen solche Dinge umzusetzen, aber nun gut....

Antwort :

Du bietest in der Klasse in der du dein Array erstellst einen öffentlichen Getter an, welcher dir dein initialisiertes bzw. befülltes Array zurückliefert.


Zudem benötigst du eine Intsanz der Klasse welche das Array als Attribut deklariert (ausgenommen es ist als static deklariert), um dann über den Getter zugriff zu erlangen, da Attribute sowieso immer
Code:
private
deklariert sein sollten , lasse ich mal den Zugriffsmodifizierer
Code:
public
außen vor.

[EDIT]Zumal ich 4500+ Beiträge finde, wenn ich hier die Suchfunktion nur einmal nutze , wie man z.B Methoden oder Attribute anderer Klassen verwendet.

:)
[/EDIT]

Bsp:
Java:
public class Inhalt {
	
	private String[] data;
	
	public Inhalt(String...strings) {
	    data = new String[strings.length];
	    
	    for (int i = 0; i < strings.length; i++) {
	        data[i] = strings[i];
        }
    }
	
	public String[] getData() 			{return this.data;}
}


Java:
public class Test {
	
	
	public Test() {
	    // TODO Auto-generated constructor stub
    }
	
	public void printData(String[] data){
		for (int i = 0; i < data.length; i++) {
	        System.out.print(data[i]);
        }
	}
	
	public static void main(String[] args) {
	    
		Test t = new Test();
		Inhalt i = new Inhalt("Das ","ist ","so ","strange o0");
		
		t.printData(i.getData()); //<<-- Öffentlichen Getter nutzen
		
    }
}

Wie du sehen kannst verwendet
Code:
t
die Instanz der Klasse Test in der
Code:
printData(String[] data);
Methode das Array welches in der Klasse Inhalt definiert und über das erstellen der Instanz
Code:
i
der Initialisiert wird.
 
Zuletzt bearbeitet:

lorenlai

Mitglied
Hallo KaoZ,

erst mal vielen Dank für die Hilfe. :)

Eigentlich habe ich ja das gemacht, was du gesagt hast, aber irgendwie kriege ich keine Daten von dem Array-Feld angezeigt :(

Schau hier ...

public class ExcelRead {

private String [][] data;

public static void main( String[] args ) throws Exception {

// steht noch mehr CODE ...

int rowNum = sheet.getLastRowNum() + 1;
int colNum = sheet.getRow(0).getLastCellNum();
String data [][] = new String [rowNum] [colNum];

// steht noch mehr CODE ...

}


}

public String[][] getExcelData() {

return data;

}

}

// und in dieser Klasse rufe ich es auf

public void testSeleniumTestDemoAddUser() throws Exception {


ExcelRead er = new ExcelRead();
String myData [][] = er.getExcelData();


// erwarte hier eine Zahl (laenge von 5), was er nicht anzeigt !!!
// siehe Fehlermeldung (screenshot angehängt)
System.out.println("=>" + myData.length);

}

Kannst du bitte nochmals helfen ?
:)

Danke dir

VG
Loren
 

Anhänge

  • SeleniumEclipseExcelTest.jpg
    SeleniumEclipseExcelTest.jpg
    127,7 KB · Aufrufe: 26

Phash

Top Contributor
Du bist in einer statischen Methode - main, und willst auf eine variable der umschliessenden Klasse zugreifen.
Du musst erst eine Instanz der Klasse anlegen, dann da deine variable setzen, und dann auf der Instanz bzw dem Objekt die Methoden aufrufen, die du brauchst.

Und java code Bitte in Java tags. Steht in rot über dem editorfenster...
 

Kiri

Bekanntes Mitglied
Mach daraus:
Java:
String data [][] = new String [rowNum] [colNum];

das
Java:
data [][] = new String [rowNum] [colNum];

dann sollte es klappe. Bei deiner Variante deklarierst du eine neue Variable und nutzt nicht die alte!
 

lorenlai

Mitglied
@Phash: Kannst du vielleicht etwas konkreter sein? Beispiel bzw. wo genau muss ich was machen?
Sorry, bin da eben ganz Neu in JAVA-Programmierung. :(

@Kiri: Neee, hat leider nicht geklappt nach Deiner Variante.

Vorher:
Java:
 String data [][] = new String [rowNum][colNum];

Nachher:
Java:
 data [][] = new String [rowNum][colNum];

Es sagt: Multiple markers at this line
- data cannot be resolved to a type
- Syntax error on token "]", VariableDeclaratorId expected after
this token
 

njans

Top Contributor
@Phash: Kannst du vielleicht etwas konkreter sein? Beispiel bzw. wo genau muss ich was machen?
Sorry, bin da eben ganz Neu in JAVA-Programmierung. :(

@Kiri: Neee, hat leider nicht geklappt nach Deiner Variante.

Vorher:
Java:
 String data [][] = new String [rowNum][colNum];

Nachher:
Java:
 data [][] = new String [rowNum][colNum];

Es sagt: Multiple markers at this line
- data cannot be resolved to a type
- Syntax error on token "]", VariableDeclaratorId expected after
this token


Ja natürlich. Du schreibst "String data [][] = ..."
Der Grund warum man Grundsätzlich "String[][] data =" schreiben sollte ist, dass das 2D Array zum Typ deiner Variable gehört, nicht zum Namen. Wenn du dann den Typ komplett löschst:
Java:
data = new String [rowNum][colNum];

dann geht es auch. Die [][] sind Teil der Typspezifizierung.
 

lorenlai

Mitglied
Ja natürlich. Du schreibst "String data [][] = ..."
Der Grund warum man Grundsätzlich "String[][] data =" schreiben sollte ist, dass das 2D Array zum Typ deiner Variable gehört, nicht zum Namen. Wenn du dann den Typ komplett löschst:
Java:
data = new String [rowNum][colNum];

dann geht es auch. Die [][] sind Teil der Typspezifizierung.

Hi njans,

neee, hat leider auch nciht geklappt :-(

vorher:
Java:
String data [][] = new String [rowNum][colNum];

nachher:
[code=Java]String [][] data  = new String [rowNum][colNum];

return data <== leer (wie vorher) :-(
 

Joose

Top Contributor
Ja es funktioniert nun nicht weil du schon wieder eine neue loakel Variable deklarierst! Damit ist die Objektvariable natürlich leer.

Löschen den Typ und du erzeugst keine neue Variable sondern arbeitest mit der Objektvariable!
 

lorenlai

Mitglied
Ja es funktioniert nun nicht weil du schon wieder eine neue loakel Variable deklarierst! Damit ist die Objektvariable natürlich leer.

Löschen den Typ und du erzeugst keine neue Variable sondern arbeitest mit der Objektvariable!

Hi Joose,

meinst du so ? :)

Java:
 data = new String [rowNum][colNum];

Dann meckert eclipse wieder => Cannot make a static reference to the non-static field data :(

Das darf doch nicht wahr sein, so schwer ist das normalerweise gar nicht, oder ? :(
 

Joose

Top Contributor
meinst du so ? :)
Java:
 data = new String [rowNum][colNum];

Genau so meine ich.

Dann meckert eclipse wieder => Cannot make a static reference to the non-static field data :(
Das darf doch nicht wahr sein, so schwer ist das normalerweise gar nicht, oder ? :(

Nein es ist auch nicht schwer! Du hast anscheinend aber ein kleines Verständnis Problem was OOP angeht, und hast viel Code in deiner main-Methode.

Schau am besten das du in deiner main Methode ein Objekt einer Klasse erstellst und diese Klasse kümmert sich um den Programmablauf. Und vermeide die Verwendung des Keywords static (mit Ausnahme bei der main Methode)
 

lorenlai

Mitglied
Hallo Leute,

um das ganze zu verdeutlichen bzw. dass ich es "eigentlich" nun verstanden habe (zumindext syntaktisch), dennoch kapiere ich es nicht, warum der eclipse weiterhin hier eine Fehlermeldung bringt.

Cannot make a static reference to the non-static field myArray

Vereinfacht dargestellt:

Java:
public class MyClass1 {

	public String [][] myArray;
	
	public static void main(String[] args) {
		
		int a = 10;
		int b = 10;
		myArray = new String [a][b]; //genau hier bringt er den Fehler

	}

	public String [][] getArr() {
		return myArray;
	}
}

public class MyClass2 {

	public void readExcel() {
		MyClass1 cl1 = new MyClass1();
		String [][] excelData =  cl1.getArr();
	} 
}

So, vielleicht kann jemand mir genau erklären, was die Fehlermeldung bedeutet?
Es hat irgendwas mit public static void main(String[] args) zu tun? :oops:
 
Zuletzt bearbeitet:

lorenlai

Mitglied
OK Leute, dasm it dem Static habe ich zwar gelesen, aber irgendwie doch nicht so richtig verstanden.
ich habe jetzt ganz einfach mein Problem gelöst. :)

habe einfach die static void main-methode weg gelassen, etwa so:

Java:
public class MyClass1 {

	
	public String [][] getExcelRecord() {

		String [][] myArray;
		int a = 10;
		int b = 10;
		myArray = new String [a][b]; 
                return myArray;

	}


}

Danke euch allen für die lange Geduld mit mir ! :applaus: :toll:
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
das keyword
Code:
static
bedeutet Statisch, also nur das du um auf Methoden oder Variablen zuzugreifen kein Objekt dieser Klasse Instanzieren musst.

Hier ein kleines Besipiel :

Java:
public class Foo {
	
	public String text = "Hallo Welt";
	
	public static void main(String[] args) {
	    System.out.println(text);

        /* lässt sich nicht Kompilieren, und du erhälst auch keine Zugriff von einer
         * statischen Methode auf eine NICHT statische Varaible.
         * Sie ist also lokal ( in der Methode ) nicht 'bekannt'.
    }

}

Hier kannst du nicht auf die Variable
Code:
text
vom Typ String zugreifen da diese

- nicht statisch ist
- kein Objekt der Klasse Foo Existiert die Zugriff darauf gestattet, bzw. in welcher diese Varaible
deklariert ist.

Es gibt nun 2 Möglichkeiten dies trotzdem umzusetzen

Möglichkeit 1 ( Instanz des Objektes erstellen) :

Java:
public class Foo {
	
	String text = "Hallo Welt";
	
	public static void main(String[] args) {
	    System.out.println(new Foo().text);  

        /* instanziert ein Foo Objekt und greift auf die
         * package private deklarierte Variable zu
         */
    }

}

Möglickeit 2 ( Statische Variablen ) :

Java:
public class Foo {
	
	static String text = "Hallo Welt";
	
	public static void main(String[] args) {
	    System.out.println(text);

        // Nachteil ist das 'text' immer für alle Objekte mit Hallo Welt initialisiert ist !
    }
  
}

man könnte jetzt noch einen Getter Schreiben insofner die Varaible als private deklariert wäre ist aber für dieses Beispiel nicht zwingend notwendig, außer du möchtest ein Beispiel sehen, da Globale Variablen eigentlich immer private deklariert sein sollten.

[TIPP]
static verwendet man z.B oft/immer im Zusammenhang mit final, wenn man Konstanten anlegt, welche sich nie verändern.

Java:
public final static String TITLE = "Mein Programm";

dieses kann man dann immer und überall nutzen , entweder über einen statischen Import, oder den voll Qualifizierten Pfad zu der Konstanten.
[/TIPP]
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
M Klassen Methode in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
M Methode in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
J Methoden Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 12
L Klassen Methode aus anderer Klasse Java Basics - Anfänger-Themen 13
M Klassen Methode aus anderer Klasse nicht aufrufbar Java Basics - Anfänger-Themen 11
F Methode anderer Klasse aufrufen Java Basics - Anfänger-Themen 1
P Aufruf Methode anderer Klasse Java Basics - Anfänger-Themen 5
I Rückgabewert einer Methode in anderer Klasse verwenden Java Basics - Anfänger-Themen 2
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
T [Erledigt] Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 0
C Problem mit Zugriff auf Variable bzw. get-Methode in anderer Klasse Java Basics - Anfänger-Themen 2
A Methode aus anderer Klasse Java Basics - Anfänger-Themen 5
H Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 7
C Objekt X über Methode aus anderer Klasse verändert Java Basics - Anfänger-Themen 3
I Von einer Methode eines Objektes auf Attribut eines Objektes anderer Klasse zugreifen Java Basics - Anfänger-Themen 4
S Main-Methode aus anderer Klasse heraus starten Java Basics - Anfänger-Themen 8
S Zugriff auf Methode anderer Klasse Java Basics - Anfänger-Themen 6
T Aufrufen von get-Methode aus anderer Klasse (absolute Anfängerfrage) Java Basics - Anfänger-Themen 2
J Methode anderer Klasse aufrufen ;-) Java Basics - Anfänger-Themen 5
B Methode aus anderer Klasse verwenden Java Basics - Anfänger-Themen 11
E Methode aus anderer Klasse ausführen Java Basics - Anfänger-Themen 3
I Festellen wann Methode in anderer Klasse fertig ist Java Basics - Anfänger-Themen 5
G Kann methode aus anderer Klasse nicht aufrufen Java Basics - Anfänger-Themen 7
G private methode wird aus anderer klasse aufgerufen? Java Basics - Anfänger-Themen 3
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
B Schleife von anderer Methode stoppen? (Start continue) Java Basics - Anfänger-Themen 18
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
T Methoden Auf Variabler aus anderer Methode zugreifen Java Basics - Anfänger-Themen 5
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
P Methoden Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 4
Mr. Pink Graphics2D in anderer Methode aufrufen Java Basics - Anfänger-Themen 6
I Im JFrame Inhalte verändern per Methode aus anderer Class Java Basics - Anfänger-Themen 5
D Methoden Methode in anderer .class Datei Funktioniert nicht. Java Basics - Anfänger-Themen 11
M OOP ActionPerformed Methode aus anderer AP aufrufen? Java Basics - Anfänger-Themen 5
M Aus anderer Methode painten Java Basics - Anfänger-Themen 2
I Kein Zugriff auf erstelltes Objekt aus anderer Methode Java Basics - Anfänger-Themen 6
H Methode aus anderer Datei aufrufen Java Basics - Anfänger-Themen 11
D Variable einer Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 19
G JTabbedPane zugriff von anderer Methode Java Basics - Anfänger-Themen 2
S JTextField in anderer Classe mit getter Methode auslesen. Java Basics - Anfänger-Themen 2
A Auf ausgewählte Items der Liste in anderer Methode zugreifen Java Basics - Anfänger-Themen 3
EagleEye methode in anderer java datei aufrufen Java Basics - Anfänger-Themen 27
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
M generate Methode für Streams Java Basics - Anfänger-Themen 6
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
T Linked List set-Methode Java Basics - Anfänger-Themen 2
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32

Ähnliche Java Themen

Neue Themen


Oben