• de

Java-Übungen

Einfache Deklaration

Problemanweisung

Deklariere eine String-Variable “name” in Test.java und weise ihr den Wert “Hallo” zu

Lösung
class Test{
String name="Hallo";
}

Prüfcode

public class TestExercise {
public static String evaluate() throws TestClassNotFoundException{
String name="name";

TestAPI testApi = new TestAPI();
if(!testApi.isFieldDeclared(name))
return “Es wurde keine Variable mit dem Namen ‘name’ gefunden”;

if(!testApi.getFieldType(name).equals(“String”))
return “Die Variable ‘” + name + “‘ muss vom Typ ‘String’ sein.”;

String val=testApi.getFieldValue(name).toString();
if(val==null)
return “Du musst ‘name’ einen Wert zuweisen.”;
if(!val.equals(“Hallo”))
return “Der Wert des Namens muss ‘Hallo’ sein.”

return “true”;
}
}

„Hallo Welt!“ ausgeben

Problemanweisung

Es soll „Hallo Welt“ in der Konsole ausgegeben werden.

Lösung

class Exercise{
public static void main(String[] arg){
System.out.println("Hallo Welt");
}
}

Prüfcode

import java.util.List;
import java.io.IOException;
public class TestExercise {
public String evaluate() throws TestClassNotFoundException, IOException {
TestAPI testApi = new TestAPI();
// Erfassung der Ausgabe starten, die an die Standard-Ausgabe gesendet wird
testApi.startOutputCapture();
testApi.executeMain();
// Erfassung der Ausgabe beenden, die an die Standard-Ausgabe gesendet wird
testApi.stopOutputCapture();
List lines = testApi.getConsoleOutput();
if(lines.size() != 1) {
return "1 Ausgabezeile erwartet, aber '" + lines.size() + "' empfangen";
}
String outputLine = (String)lines.get(0);
if(!outputLine.equals("Hallo Welt")) {
return "Es wurde nicht die richtige Nachricht an die Konsole ausgegeben.";
}
return TestAPI.SUCCESS;
}
}

Read Input(java.util.Scanner)

Problemanweisung

Schreibe ein Programm, das eine Eingabe aus der Konsole annimmt und ausgibt.
Anweisungen für Teilnehmer: Verwende die Scanner-Klasse zum Lesen der Benutzereingabe (dies wird ein zufälliger Name sein) und gib eine Zeichenfolge aus, die als „Hallo #name“ formatiert ist, wobei #name der vom Benutzer angenommene Eingabewert ist.
Schreibe deinen Code in die main-Methode der Exercise-Klasse.

Lösung

import java.util.Scanner;
public class Exercise {
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
System.out.println("Gib deinen Namen ein:");
String name = scanner.next();
System.out.println("Hallo "+name);
}
}

Prüfcode

import java.util.List;
public class TestExercise {
public String evaluate() throws TestClassNotFoundException {
TestAPI testApi = new TestAPI();
String[] inputConsoleArgs= {"Sam"};
Class[] parameterTypes = new Class[]{String[].class};
Object[] values = {new String[]{""}};
Object result = testApi.invokeMethod("main", parameterTypes, values, inputConsoleArgs);

List lines = testApi.getConsoleOutput();
if(lines.size() != 2) {
return “1 Ausgabezeile erwartet, aber ‘” + lines.size() + “‘ empfangen”;
}
// Zeile ‘1’ abrufen, da Zeile ‘0’ die ursprüngliche Aufforderung war
String outputLine = (String)lines.get(1);
if(!outputLine.equals(“Hallo Sam”)) {
return “Es wurde nicht die richtige Nachricht an die Konsole ausgegeben.”;
}
return TestAPI.SUCCESS;
}
}

Deklaration (mit Modifizierern)

Problemanweisung

Deklariere eine private statische int-Variable mit dem Namen ‘id’
Anweisungen für Teilnehmer: Deklariere eine private statische int-Variable mit dem Namen ‘id’ in der Exercise-Klasse.

Lösung

class Exercise{
private static int ID;
}

Lösung

public class TestExercise {
public String evaluate() throws TestClassNotFoundException {
TestAPI testApi = new TestAPI();
String id="ID";
if(!testApi.isFieldDeclared(id)) {
return "Feld 'id' wurde nicht gefunden.";
}
if(!testApi.getFieldType(id).equals("int")) {
return "Das Feld 'id' muss vom Typ 'int' sein.";
}
if(!testApi.isPrivateMember(id)) {
return "Das Feld 'id' muss privat sein.";
}
if(!testApi.isStaticMember(id)) {
return "Das Feld 'id' muss statisch sein.
}
return TestAPI.SUCCESS;
}
}