
It will be a question of a utility project, which can be useful to anyone who studies Java and does not always have a PC at hand to view the work of the example code in the field (somehow - in the subway, shuttle bus, cafe, etc.). 
The need to create this division arose when I was preparing for OCJP certification. After successful completion of this, I decided to provide the fruits of my ideas for review to the respected participants of the community.
')
I don’t have a laptop, but it’s convenient to run code samples on a smartphone while sitting in the kitchen with a cup of tea.
It so happened that most of the examples for training are usually given in the format of console programs. The wonderful 
AIDE tool allows you to build an Android application based on Eclipse projects. The opportunity, alas, is not enough to run console examples using copy-paste.
Things are easy - we redirect the input / output streams to the UI controls:
private static OutputStream mOutputStream = new OutputStream() { @Override public void write(int b) { MainActivity.getInstance().write((byte)b); } }; @Override public void onCreate(Bundle savedInstanceState) { ... System.setOut(new PrintStream(mOutputStream)); System.setErr(new PrintStream(mOutputStream)); ... } 
The console program starts in a separate thread from the activity 
onResume() handler:
  @Override public void run() { try {  
Here you can set the command line arguments - good old 
args . Example - run 
BankTellerSimulation for 10 seconds:
 BankTellerSimulation.main(new String[] { "10" }); 
The work of several threads is supported ( 
SimpleThreadsTest ):

HorseRace and 
BankTellerSimulation are examples of more complex multi-threaded applications (taken from the book 
Thinking in Java, 4th Ed by Bruce Eckel ).
Runtime errors
ErrorTest example:
 class FuuuuuuException extends RuntimeException { public FuuuuuuException(String message) { super(message); } } ... throw new FuuuuuuException("!!!TROLLFACE!!!"); 
We get an exception:

Input
Finally, for the sake of completeness, console input was added. So far, my knowledge of the Android user interface is not great. I managed to shove the 
EditText , but the result is not perfect :)
The prompt to enter a string ( 
ReadingInputTest ):

Further:

Menu functions
Exit disables the process through 
System.exit(0) .
The program is "disposable." There are no repeated restarts (I didn't want to bother with clearing the values of static fields).
What makes 
Clear is a big secret.
What does not work
• 
assert 's java. Those. operator
 assert "Cat".equals("Dog"); 
exception 
java.lang.AssertionError will not throw. Not to be confused with JUnit asserts - everything 
is fine with them!)
• 
Console class.
• The input field does not always pick up the focus.
Project files
You can pick up the sources from 
GitHub , or download a 
zip archive with projects for Android Studio and Eclipse.
The examples described are in the 
com.examples package. All examples can be run unchanged on a regular PC (run everywhere!).