/* The Essential Computing 2021 - Petr Boska Nylander

The assingment:
    Write a program that asks the user to enter a number and the program tells 
    if the number is odd or even and if the number is positive, negative or zero.


The approach:
    How I went about solving this problem:
    This program will be taking an user input, so I will need scanner again. I need to validate such an input, if the user suddenly or just for fun writes 
    String or Decimal number as an input, I will therefore make a constrain, that this program will take as a correct input only an integer. Then this input
    will need to get evaluated again for positive, negative or zero and then for odd and evne numbers. I will create method, that will be evaluating the inputed number, if it is negative, positive or number zero. I will also
    need another method, that will use modulo function in evaluating if that number is even or odd. 

*/
import java.util.Scanner; // importing the scanner, that will be needed to take the user input (integer in this case)
public class HelloWorld { 
    public static void positiveNegativeZero(int number){ // creating a method that will be used to determine whether the number inputed by user is positive, negative or zero, the functions takes a parameter number of type integer
        
        if (number > 0) { // This if statement determines if the number is bigger than zero, then it will print user has inputed positive number, if not, this branch of if statement will not be evaluated 
            System.out.print(number + " is positive"); // Let user know that he had entered positive number
        }else if (number < 0){ // if the above IF statement get evaluated as wrong, it means the number is less than zero and the program will print that the user integer is negative
            System.out.print(number + " is negative"); // Let user know that he had entered negative number
        }else{ // if not of these above statements (if and else if) evaluate to true, that means user entered number zero and the program will print that user have entered zero
            System.out.print("You have entered zero"); // Let user know that he had entered zero
        }
    }
    public static void evenOrOdd(int number){ // This method will determine wheter the number is even or odd.
        if (number % 2 == 0 && number != 0){ // In the if statement I am using the modulo operator, meaning that if the entered number is divided by two and its reminder is zero, that user has entered even number
                                             // I also need to take in account that the entered number can be zero and in that case this IF branch will evaluate only if the reminder is 0 and the number entered by the user is not equal to 0. 
                                             // I have condition if the user enteres 0 in the else branch of this method
            System.out.println(" and even number"); // Let user know that he had entered even number
        }else if (number %2 != 0){// if the remainder is not equal to zero, we are dealing with an odd number and the program will print that the number is odd
            System.out.println(" and odd number"); // Let user know that he had entered odd number
        }else{ // If the previous statements will not evaluate true, it means the entered number is zero 
            System.out.println(", which is an even number"); // Let user know that he had entered zero, which is an even number
        }
    }
    public static void main(String[] args) { // this is the main body of the program, which will run first and the methods above will run when they are being called in the main body of the program
        int number; // declaring the variable name of type of intereger, where the user inputed number will be stored in
        boolean  isInteger; // declearing the boolean variable isInteger, which will be used in the do-while loop in evaluating if the user had entered an integer
        Scanner in = new Scanner(System.in); // using the scanner object to scan for the user input, the input will get evaluated 
        do { // I am using the do - while loop with the boolean condition isInteger, which will run and exit the loop, once the user had entered an integer. If the user enteres something other than integer, it will keep looping and asking for integer. 
            //which will have an if and else statements and will be looping over 
            System.out.print("Please, enter any integer you want: "); // Asking user for the input 
            if (in.hasNextInt()){ // The condition for the if statement, if the user input is integer, this IF loop will run
                number = in.nextInt(); // assinging the user input into a variable called number
                isInteger = true; // If the boolean value isInteger is true it is telling to the while loop, that the condition has been met and we want to exit the while loop
                System.out.println("Your entered number is: " + number); // printing back to the user his/hers inputed number
                positiveNegativeZero(number); // calling the method number for determining whether the number is positive, negative or zero
                evenOrOdd(number); // calling the second method for determining whether the number is even or odd
            }else{ // if the user enters anything else than integer, this else statement will run
                System.out.println("I am sorry Dave, I am affraid I can't do that, this is not an integer!"); // letting the user know what is wrong 
                isInteger = false; // if the bolean value isInteger is fale, it is telling to the while loop, that the condition has not been met and we want to keep looping until the user has entered an integer
                in.next(); // function of scanner, that is asking for a new input from the user
            }
        } while (!(isInteger));
        in.close(); // closing the scanner
    }
}


 

Java online compiler

Write, Run & Share Java code online using OneCompiler's Java online compiler for free. It's one of the robust, feature-rich online compilers for Java language, running the Java LTS version 17. Getting started with the OneCompiler's Java editor is easy and fast. The editor shows sample boilerplate code when you choose language as Java and start coding.

Taking inputs (stdin)

OneCompiler's Java online editor supports stdin and users can give inputs to the programs using the STDIN textbox under the I/O tab. Using Scanner class in Java program, you can read the inputs. Following is a sample program that shows reading STDIN ( A string in this case ).

import java.util.Scanner;
class Input {
    public static void main(String[] args) {
    	Scanner input = new Scanner(System.in);
    	System.out.println("Enter your name: ");
    	String inp = input.next();
    	System.out.println("Hello, " + inp);
    }
}

Adding dependencies

OneCompiler supports Gradle for dependency management. Users can add dependencies in the build.gradle file and use them in their programs. When you add the dependencies for the first time, the first run might be a little slow as we download the dependencies, but the subsequent runs will be faster. Following sample Gradle configuration shows how to add dependencies

apply plugin:'application'
mainClassName = 'HelloWorld'

run { standardInput = System.in }
sourceSets { main { java { srcDir './' } } }

repositories {
    jcenter()
}

dependencies {
    // add dependencies here as below
    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'
}

About Java

Java is a very popular general-purpose programming language, it is class-based and object-oriented. Java was developed by James Gosling at Sun Microsystems ( later acquired by Oracle) the initial release of Java was in 1995. Java 17 is the latest long-term supported version (LTS). As of today, Java is the world's number one server programming language with a 12 million developer community, 5 million students studying worldwide and it's #1 choice for the cloud development.

Syntax help

Variables

short x = 999; 			// -32768 to 32767
int   x = 99999; 		// -2147483648 to 2147483647
long  x = 99999999999L; // -9223372036854775808 to 9223372036854775807

float x = 1.2;
double x = 99.99d;

byte x = 99; // -128 to 127
char x = 'A';
boolean x = true;

Loops

1. If Else:

When ever you want to perform a set of operations based on a condition If-Else is used.

if(conditional-expression) {
  // code
} else {
  // code
}

Example:

int i = 10;
if(i % 2 == 0) {
  System.out.println("i is even number");
} else {
  System.out.println("i is odd number");
}

2. Switch:

Switch is an alternative to If-Else-If ladder and to select one among many blocks of code.

switch(<conditional-expression>) {    
case value1:    
 // code    
 break;  // optional  
case value2:    
 // code    
 break;  // optional  
...    
    
default:     
 //code to be executed when all the above cases are not matched;    
} 

3. For:

For loop is used to iterate a set of statements based on a condition. Usually for loop is preferred when number of iterations is known in advance.

for(Initialization; Condition; Increment/decrement){  
    //code  
} 

4. While:

While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.

while(<condition>){  
 // code 
}  

5. Do-While:

Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.

do {
  // code 
} while (<condition>); 

Classes and Objects

Class is the blueprint of an object, which is also referred as user-defined data type with variables and functions. Object is a basic unit in OOP, and is an instance of the class.

How to create a Class:

class keyword is required to create a class.

Example:

class Mobile {
    public:    // access specifier which specifies that accessibility of class members 
    string name; // string variable (attribute)
    int price; // int variable (attribute)
};

How to create a Object:

Mobile m1 = new Mobile();

How to define methods in a class:

public class Greeting {
    static void hello() {
        System.out.println("Hello.. Happy learning!");
    }

    public static void main(String[] args) {
        hello();
    }
}

Collections

Collection is a group of objects which can be represented as a single unit. Collections are introduced to bring a unified common interface to all the objects.

Collection Framework was introduced since JDK 1.2 which is used to represent and manage Collections and it contains:

  1. Interfaces
  2. Classes
  3. Algorithms

This framework also defines map interfaces and several classes in addition to Collections.

Advantages:

  • High performance
  • Reduces developer's effort
  • Unified architecture which has common methods for all objects.
CollectionDescription
SetSet is a collection of elements which can not contain duplicate values. Set is implemented in HashSets, LinkedHashSets, TreeSet etc
ListList is a ordered collection of elements which can have duplicates. Lists are classified into ArrayList, LinkedList, Vectors
QueueFIFO approach, while instantiating Queue interface you can either choose LinkedList or PriorityQueue.
DequeDeque(Double Ended Queue) is used to add or remove elements from both the ends of the Queue(both head and tail)
MapMap contains key-values pairs which don't have any duplicates. Map is implemented in HashMap, TreeMap etc.