AbstractCharStreamScanner implements CharStreamScanner { @Override public float readFloat() throws NumberFormatException { String number = consumeDecimal(); return Float.parseFloat(number); } AbstractCharStreamScanner(); @Override int readDigit(); @Override double readDouble(); @Override float readFloat(); @Override int skipWhile(CharFilter filter); @Override char skipWhileAndPeek(CharFilter filter); @Override char skipWhileAndPeek(CharFilter filter, int max); @Override String readWhile(CharFilter filter); @Override String readUntil(CharFilter filter, boolean acceptEof, String stop); @Override String readUntil(CharFilter filter, boolean acceptEot, String stop, boolean ignoreCase); @Override boolean skipOver(String substring); @Override boolean skipOver(String substring, boolean ignoreCase); @Override String readLine(); @Override boolean expect(String expected); @Override boolean expectStrict(String expected); @Override Character readJavaCharLiteral(); @Override String readJavaStringLiteral();  }
@Test public void testReadFloat() { String string = "123456789-987654321+0.123e-10xyz"; CharStreamScanner scanner = scanner(string); assertThat(scanner.readFloat()).isEqualTo(123456789f); assertThat(scanner.readFloat()).isEqualTo(-987654321f); assertThat(scanner.readFloat()).isEqualTo(+0.123e-10f); try { scanner.readDouble(); failBecauseExceptionWasNotThrown(NumberFormatException.class); } catch (NumberFormatException e) { } }