import java.io.UnsupportedEncodingException;
class Main {
static {
System.loadLibrary("Main");
}
static int substringUtf8LengthNative(final String s, final int start, final int length) {
JavaEnvFor_substringUtf8LengthNative jEnv = new JavaEnvFor_substringUtf8LengthNative(s, start, length);
return jEnv._returnResult;
}
private static final class JavaEnvFor_substringUtf8LengthNative {
java.lang.String _s;
private java.lang.String c2j(final int cEnv) throws Exception {
return this._s;
}
int _start;
private int c2j1(final int cEnv) throws Exception {
return this._start;
}
int _length;
private int c2j2(final int cEnv) throws Exception {
return this._length;
}
int _returnResult;
private native void j2c();
JavaEnvFor_substringUtf8LengthNative(final String s, final int start, final int length) {
this._s = s;
this._start = start;
this._length = length;
this.j2c();
}
}
static int utf8LengthJava(final String s) {
try {
final byte[] utf8 = s.getBytes("UTF-8");
return utf8.length;
} catch (final UnsupportedEncodingException e) {
System.err.println(e);
}
throw new Error();
}
public static void main(String[] args) {
final String s = "Sch\u00F6ne Gr\u00FC\u00DFe!";
for (int start=0; start<s.length(); start++) {
for (int length=1; length<=s.length()-start; length++) {
final String sub = s.substring(start, start + length);
final int jl = utf8LengthJava(sub);
final int nl = substringUtf8LengthNative(s, start, length);
if (jl != nl)
System.out.print("mistake: ");
System.out.println("|" + sub + "| ==n " + nl + " ==j " + jl);
}
}
}
}