CharAt: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(12 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''charAt'' gibt das Zeichen an einer beliebigen Stelle innerhalb einer Zeichenkette zurück. Das erste Zeichen hat dabei den Index 0, das zweite Zeichen den Index 1 usw.
Die Funktion ''charAt'' gibt das Zeichen an einer beliebigen Stelle innerhalb einer Zeichenkette zurück. Das erste Zeichen hat dabei den Index 0, das zweite Zeichen den Index 1 usw.
Zeile 5: Zeile 8:


=== Syntax ===
=== Syntax ===
  charAt(String zeichenkette, int stelle)
  charAt([[Zeichenkette]] zeichenkette, [[Ganzzahl]] stelle)


=== Parameter ===
=== Parameter ===
Zeile 15: Zeile 18:


=== Beispiele ===
=== Beispiele ===
  charAt('hallo','0')  --> returns h
==== Standardfälle ====
  charAt('hallo',0)  --> returns h
charAt('JACK',3)  --> returns K
 
==== Benutzung mit Variablen ====
 
charAt([var=a], [var=b])
charAt([var=a], 0)
charAt('JACK', [var=b])


charAt('JACK','3')  --> returns K
==== Benutzung mit studentischen Eingaben ====


====JUnit Tests====
'''Jack2:'''
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
charAt([pos=1], [pos=2])
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
charAt([pos=1], 0)
@Before
charAt('JACK', [pos=1])
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("W"));
  placeExerciseVariable("a", OMParser.parse("W"));
}
@Test
public void testCharAt() {
  assertTrue("'o'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',4)")));
  assertTrue("'W'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',6)")));
  assertTrue("' '".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',5)")));
  assertTrue("'!'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',11)")));
  assertTrue("'1'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',12)")));
}
@Test (expected=StringIndexOutOfBoundsException.class)
public void testCharAtOutOfBoundsIndexNegative() {
  getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',-1)");
}
@Test (expected=StringIndexOutOfBoundsException.class)
public void testCharAtOutOfBoundsIndexToHigh() {
  getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',55)");
}
@Test
public void testCharAtWithInput() {
  assertTrue("'W'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello [pos=1]orld!1',6)")));
}
@Test
public void testCharAtWithVariables() {
  assertTrue("'W'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello [var=a]orld!1',6)")));
}
@Test
public void testCharAtWithExpressions() {
  assertTrue("'b'".equals(getEvaluator().getResultAsEvaluatorString("charAt(charAt('abc', 1), 0)")));
  assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("charAt('abc', charAt('00', 0))")));
}
@Test (expected=InvalidEvaluatorFunctionArgumentException.class)
public void testCharAtWithWrongInputCharacter() {
  getEvaluator().getResultAsEvaluatorString("charAt('abcd', a)");
}
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCharAtWithOneArgument() {
  getEvaluator().getResultAsEvaluatorString("charAt('abcd')");
}
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCharAtWithThreeArguments() {
  getEvaluator().getResultAsEvaluatorString("charAt('abcd', 0, 2)");
}
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCharAtWithTwoRationalArguments() {
  getEvaluator().getResultAsEvaluatorString("charAt(5, 12)");
}
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCharAtWithTwoTextArguments() {
  getEvaluator().getResultAsEvaluatorString("charAt('abc', '1')");
}


@Test (expected=UndefinedExerciseVariableException.class)
'''Jack3:'''
public void testCharAtWithMissingExcerciseVariable() {
charAt([input=field1], [input=field2])
  getEvaluator().getResultAsEvaluatorString("charAt('[var=j]', 2)");
charAt([input=field1], 0)
}
charAt('JACK', [input=field1])
@Test (expected=UndefinedFillInVariableException.class)
charAt([input=field1], [var=b])
public void testCharAtWithMissingInput() {
charAt([var=a], [input=field1])
getEvaluator().getResultAsEvaluatorString("charAt('[pos=42]', 2)");
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Die angegebene Zahl darf nicht kleiner als 0 und nicht größer als die Länge der Zeichenkette -1 sein.
* Die angegebene Zahl darf nicht kleiner als 0 und nicht größer als die Länge der Zeichenkette -1 sein.
* Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
* Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Zeichenkettenfunktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 15. April 2024, 12:31 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion charAt gibt das Zeichen an einer beliebigen Stelle innerhalb einer Zeichenkette zurück. Das erste Zeichen hat dabei den Index 0, das zweite Zeichen den Index 1 usw.

Die Funktion erwartet eine Zeichenkette und eine natürliche Zahl und gibt das Zeichen an der entsprechenden Stelle zurück.

Syntax

charAt(Zeichenkette zeichenkette, Ganzzahl stelle)

Parameter

  • zeichenkette - die Zeichenkette, aus der das Zeichen bestimmt wird
  • stelle - das wievielte Zeichen zurückgegeben werden soll

Return Value

  • Gibt eine Character zurück.

Beispiele

Standardfälle

charAt('hallo',0)   --> returns h

charAt('JACK',3)   --> returns K

Benutzung mit Variablen

charAt([var=a], [var=b])
charAt([var=a], 0)
charAt('JACK', [var=b])

Benutzung mit studentischen Eingaben

Jack2:
charAt([pos=1], [pos=2])
charAt([pos=1], 0)
charAt('JACK', [pos=1])
Jack3:
charAt([input=field1], [input=field2])
charAt([input=field1], 0)
charAt('JACK', [input=field1])

charAt([input=field1], [var=b])
charAt([var=a], [input=field1])

Hinweise

  • Die angegebene Zahl darf nicht kleiner als 0 und nicht größer als die Länge der Zeichenkette -1 sein.
  • Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
  • Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.