| Symbol | Description | Examples |
|---|---|---|
| < <= > >= | less/-equal, greater/-equal | if (i<=8) {} |
| == != | equal, unequal | if (i==3) {} |
| && || ! | logical AND, OR, NOT | if ((a==0)&&(b!=3)) {} |
| instanceof | object type comparison | if (s instanceof String) {} |
String[] array args contains
the input parameters java IfThenElse par1 par2 ...
public class IfThenElse {
public static void main(String[] args) {
if (args.length == 1) {
System.out.println("one: " + args[0]);
}
if (args.length == 2) {
System.out.println("two: " + args[0] + " " + args[1]);
}
if (args.length == 1) {
System.out.println("one");
} else {
System.out.println("not one");
}
if (args.length > 2)
System.out.println("more than two parameters");
}
}
public class NestedIf {
public static void main(String[] args) {
if (args.length == 0)
System.out.println("zero");
else if (args.length == 1)
System.out.println("one");
else if (args.length == 2)
System.out.println("two");
else if (args.length == 3)
System.out.println("three");
else
System.out.println("more");
}
}
public class Switch {
public static void main(String[] args) {
char operator = args[0].charAt(0);
// get first letter of first parameter in command line
int operand1 = 12;
int operand2 = 4;
switch (operator) {
case '+':
System.out.println(operand1 + operand2);
break;
case '-':
System.out.println(operand1 - operand2);
break;
case '*':
System.out.println(operand1 * operand2);
break;
case '/':
System.out.println(operand1 / operand2);
break;
default:
System.out.println("unknown operator");
break;
}
}
}
public class While {
public static void main(String[] args) {
int i = 0;
while(i <= 100){
System.out.println(i);
i += 10;
}
}
}
import java.util.Scanner;
public class DoWhile {
public static void main(String[] args) {
int i = 0;
do {
System.out.println(i);
i += 10;
} while (i <= 100);
Scanner scanner = new Scanner(System.in);
System.out.println(scanner.delimiter());
String input;
do {
input = scanner.next();
} while (!input.equalsIgnoreCase("quit"));
}
}
public class For {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
break;continue;
public class BreakContinue {
public static void main(String[] args) {
while(true){ // infinite loop
// label α
int i = (int) Math.round(Math.random() * 100); // random number ∈ [0, 99]
if(i > 50)
continue; // re-entry the loop (go to label α)
System.out.print(i + ", ");
if(i == 0)
break; // break out of the loop (go to label β)
}
// label β
System.out.println("done");
}
}
RuntimeException and subclasses
try { .... } catch () {} bracket
Integer.parseInt(String))
member function of the class Integer
converting a string into integers, if possible
public class TryCatchFinally {
/** This function throws an artimetic runtime exception
* whenever a division by zero is perfomed.
*/
public static int devide (int dividend, int divisor)
throws ArithmeticException{
if (divisor == 0)
{
throw new ArithmeticException("division by zero");
} else
return dividend / divisor;
} // end of TryCatchFinally.divide()
/** Entry point.
*/
public static void main(String[] args) {
try{
int result = TryCatchFinally.devide(Integer.parseInt(args[0]),
Integer.parseInt(args[1]));
System.out.println(result);
} catch(ArithmeticException exception)
{ // thrown by TryCatchFinally.devide()
System.out.println("Division by zero!");
} catch(ArrayIndexOutOfBoundsException exception)
{ // thrown by calling args[]
System.out.println("Provide two parameters!");
System.out.println(exception.toString());
} catch(NumberFormatException exception)
{ // thrown by Integer.parseInt()
System.out.println("Provide only integer numbers!");
} finally
{ // always executed
System.out.println("Done with or without error.");
}
} // end of TryCatchFinally.main()
} // end of class TryCatchFinally()
The computer chooses a random integer number of a given interval.
The user tries to guess the number while the computer gives the
feedbacks "too high" or "too low".
int random = (int) Math.round(Math.random() * 100);
Scanner scanner = new Scanner(System.in).useDelimiter("\n");
String input = scanner.next();
int number = Integer.parseInt(input);
import java.util.Scanner;
public class NumberGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in).useDelimiter("\n");
int min = 0, max = 100, input = 0, numberOfGuesses = 0;
int random = (int) Math.round(Math.random() * (max - min)) + min;
System.out.println("Guess the random integer number between " + min + " and " + max + "!");
do {
numberOfGuesses++;
while (true) {
System.out.print("guess " + numberOfGuesses + ": ");
try {
input = Integer.parseInt(scanner.next());
break;
} catch (NumberFormatException exception) {
System.out.println("Integer number requested!");
}
}
if (input < random) {
System.out.println(input + " is too low.");
} else if (input > random) {
System.out.println(input + " is too high.");
}
} while (input != random);
System.out.println(input + " is correct!");
}
}
The computer has to calculate the factorial of a non-negative integer number given by the user using iteration.
BigInteger number = BigInteger.valueOf(15);
BigInteger product = number1.multiply(number2);
BigInteger: integers with arbitrary length
import java.math.BigInteger; // arbitrary length integers
public class IterativeFactorial {
/** Factorial using BigIntegers.
*/
public static BigInteger factorial(int arg) {
BigInteger result = BigInteger.valueOf(1);
for (int i = 2; i <= arg; i++) {
result = result.multiply(BigInteger.valueOf(i)); // ℤ
}
return result; // only correct if arg ≥ 0
}
/** Factorial using Long integers.
*/
public static long factorial(byte arg) {
long result = 1;
for (byte i = 2; i <= arg; i++) {
result *= i; // [−9,223,372,036,854,775,808, 9,223,372,036,854,775,807]
}
return result; // only correct if arg ∈ [0, 20]
}
public static void main(String[] args) {
try {
int intNumber = Integer.parseInt(args[0]); // [−2,147,483,648, 2,147,483,647]
BigInteger bigIntegerFactorial = IterativeFactorial.factorial(intNumber);
System.out.println(intNumber + "! = " + bigIntegerFactorial);
byte byteNumber = Byte.parseByte(args[0]); // [−128, 127]
long longFactorial = IterativeFactorial.factorial(byteNumber);
System.out.println(byteNumber + "! = " + longFactorial);
} catch (Exception exception) {
System.out.println("An error occured!");
System.out.println("usage: java IterativeFactorial ");
}
}
}
public class Recursion {
public static void down(int i) {
System.out.println(i);
if (i > 0)
Recursion.down(i - 1);
}
public static int sum(int i){
if(i > 0){
return i + sum(i - 1);
}else{
return i;
}
}
public static void main(String[] args) {
Recursion.down(10);
System.out.println("100*101/2 = " + Recursion.sum(100));
}
}
training suggestion
write a code for evaluating the n-th
Fibonacci number
public class Fibonacci {
public static long fibonacci(int arg) {
switch (arg) {
case 0:
return 0; // f_0 := 0
case 1:
return 1; // f_1 := 1
default:
return Fibonacci.fibonacci(arg - 1) + Fibonacci.fibonacci(arg - 2);
// f_n := f_(n-1) + f_(n-2)
}
}
public static void main(String[] args) {
try {
int number = Integer.parseInt(args[0]);
long fibonacci = Fibonacci.fibonacci(number);
System.out.println("f_" + number + " = " + fibonacci);
} catch (Exception exception) {
System.out.println("An error occured!");
System.out.println("usage: java Fibonacci ");
}
}
}
public class TwoSum {
public static void main(String args[]) {
double sum, smallNumber;
double bigNumber = 1.0;
int n = 100;
// ***
// *** with not too small number first
// ***
for (int exponent=4;exponent<19;exponent=exponent+2)
{
System.out.printf("exponent: %d\n",exponent);
smallNumber = Math.pow(10.0,-exponent);
sum = n*smallNumber + bigNumber; // sum of smallNumber first
System.out.printf("adding sum of small numbers to big number: %20.18f\n",
sum);
//
sum = bigNumber;
for (int i=0;i<n;i++)
sum += smallNumber;
System.out.printf(" adding small numbers to big number: %20.18f\n",
sum);
System.out.println(" ");
//
} // end of loop over exponents
} // end of TwoSum.main()
} // end of TwoSum
large number of small numbers
import java.lang.Math; // standard import, always useful
/** Series summation may depend on the order.
* Summing 1/k^2 upwards and downwards.
*/
public class SeriesSummation {
public static void main(String[] args) {
double exact = Math.PI*Math.PI/6.0; // infinite series
double resultUp = 0.0;
double resultDown = 0.0;
int maxN = 0;
for (int ii=4; ii<21; ii+=4)
{
maxN = ii*10000000;
resultUp = SeriesSummation.summationUp(maxN); // both calls
resultDown = summationDown(maxN); // possible
System.out.printf("%20.16f %20.16f %20.16f\n",
exact,resultUp,resultDown);
}
System.out.println(" ");
System.out.printf("exact result : %20.16f\n",exact);
System.out.printf("summing down : %20.16f\n",resultDown);
System.out.printf(" summing up : %20.16f\n",resultUp);
System.out.printf(" error : ^^\n");
System.out.printf(" maxN : %d\n",maxN);
}
/** Summing upwards.
*/
public static double summationUp(int maxN) {
double result = 0.0;
for (int i=1; i<=maxN; i++)
result += 1.0/(1.0*i*i);
return result;
} // end of summationUP
/** Summing downwards.
*/
public static double summationDown(int maxN) {
double result = 0.0;
for (int i=maxN; i>0; i--)
result += 1.0/(1.0*i*i);
return result;
} // end of summationUP
} // end of class seriesSummation
1.6449340668482264 1.6449340418154346 1.6449340418482268
1.6449340668482264 1.6449340545247193 1.6449340543482265
1.6449340668482264 1.6449340578345750 1.6449340585148930
1.6449340668482264 1.6449340578345750 1.6449340605982263
1.6449340668482264 1.6449340578345750 1.6449340618482264
exact result : 1.6449340668482264
summing down : 1.6449340618482264
summing up : 1.6449340578345750
error : ^^
maxN : 200000000