Chapter 1 - Unit 7
Conditional Statements in Java
Class 10 - APC Understanding Computer Applications with BlueJ
State whether the following statements are 'True' or 'False'
Question 1
if statement is also called as a conditional statement.
True
Question 2
A conditional statement is essentially formed by using relational operators.
True
Question 3
An if-else construct accomplishes 'fall through'.
False
Question 4
In a switch case, when the switch value does not match with any case then the execution transfers to the default case.
True
Question 5
The break statement may not be used in a switch statement.
False
Tick the correct answer
Question 1
If m, n, p are the three integers, then which of the following holds true, if(m==n)&&(n!=p)?
- 'm' and 'n' are equal ✓
- 'n' and 'p' are equal
- 'm' and 'p' are equal
- none
Question 2
A compound statement can be stated as
- p=in.nextInt();
q=in.nextInt(); - m=++a;
n=--b; - if(a>b)
{a++;b--;} ✓ - none
Question 3
If((p>q)&&(q>r)) then
- q is the smallest number
- q is the greatest number
- p is the greatest number ✓
- none
(where p, q and r are three integer numbers)
Question 4
if(a<b)
c=a;
else
c=b;
It can be written as:
- c= (b<a)?a:b;
- c= (a!=b)?a:b;
- c= (a<b)?b:a;
- none ✓
Question 5
If(a<b && a<c)
- a is the greatest number
- a is the smallest number ✓
- b is the greatest number
- none
(where a, b and c are three integer numbers)
Write the Java expressions for the following
Question 1
Java expression
Math.cbrt(a * b + c * d)
Question 2
Java expression
p * p * p + q * q * q * q - 1 / 2 * r
Question 3
Java expression
(-b + Math.sqrt(b * b - 4 * a * c)) / 2 * a
Question 4
Java expression
(0.05 - 2 * y * y * y) / (x - y)
Question 5
Java expression
Math.sqrt(m * n) + Math.cbrt(m + n)
Question 6
Java expression
3 / 4 * (a + b) - 2 / 5 * a * b
Question 7
Java expression
3 / 8 * Math.sqrt(b * b + c * c * c)
Question 8
Java expression
Math.cbrt(a) + b * b - Math.cbrt(c)
Question 9
Java expression
Math.sqrt(a + b * b + c * c * c) / 3
Question 10
Java expression
Math.sqrt(3 * x + x * x) / (a + b)
Predict the output
Question 1
int m=3,n=5,p=4;
if(m==n && n!=p)
{
System.out.println(m*n);
System.out.println(n%p);
}
if((m!=n) || (n==p))
{
System.out.println(m+n);
System.out.println(m-n);
}
Output
8
-2
Explanation
The first if condition — if(m==n && n!=p)
, tests false as m is not equal to n. The second if condition — if((m!=n) || (n==p))
tests true so the statements inside its code block are executed printing 8 and -2 to the console.
Question 2
int a=1,b=2,c=3;
switch(p)
{
case 1: a++;
case 2: ++b;
break;
case 3: c--;
}
System.out.println(a + ","
+ b + "," +c);
(i) p = 1
Output
2,3,3
Explanation
When p
is 1, case 1
is matched. a++
increments value of a
to 2. As there is no break
statement, fall through to case 2
happens. ++b
increments b
to 3. break
statement in case 2
transfers program control to println
statement and we get the output as 2,3,3.
(ii) p = 3
Output
1,2,2
Explanation
When p
is 3, case 3
is matched. c--
decrements c
to 2. Program control moves to the println
statement and we get the output as 1,2,2.
Convert the following constructs as directed
Question 1
switch case construct into if-else-if :
switch (n)
{
case 1:
s=a+b;
System.out.println("Sum="+s);
break;
case 2:
d=a-b;
System.out.println("Difference="+d);
break:
case 3:
p=a*b;
System.out.println("Product="+p);
break;
default:
System.out.println("Wrong Choice!");
}
Answer
if (n == 1) {
s = a + b;
System.out.println("Sum="+s);
}
else if (n == 2) {
d = a - b;
System.out.println("Difference="+d);
}
else if (n == 3) {
p = a * b;
System.out.println("Product="+p);
}
else {
System.out.println("Wrong Choice!");
}
Question 2
if-else-if construct into switch case:
if(var==1)
System.out.println("Distinction");
else if(var==2)
System.out.println("First Division");
else if(var==3)
System.out.println("Second Division");
else
System.out.println("invalid");
Answer
switch (var) {
case 1:
System.out.println("Distinction");
break;
case 2:
System.out.println("First Division");
break;
case 3:
System.out.println("Second Division");
break;
default:
System.out.println("invalid");
}
Answer the following questions
Question 1
What is meant by 'conditional' statement? Explain.
Answer
The order in which the statements of a program are executed is known as control flow. By default, the statements of a program are executed from top to bottom in order in which they are written. But most of the times our programs require to alter this top to bottom control flow based on some condition. The statements that help us to alter the control flow of the program are known as conditional statements.
Question 2
What is the significance of System.exit(0)?
Answer
System.exit(0) terminates the execution of the program by stopping the Java Virtual Machine which is executing the program. It is generally used when due to some reason it is not possible to continue with the execution of the program. For example, if I am writing a program to find the square root of a number and the user enters a negative number then it is not possible for me to find the square root of a negative number. In such situations, I can use System.exit(0) to terminate the program. The example program to find the square root of a number is given below:
import java.util.Scanner;
public class SquareRootExample {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("Enter the number: ");
int n = in.nextInt();
if (n < 0) {
System.out.println("Cannot find square root of a negative number");
System.exit(0);
}
double sqrt = Math.sqrt(n);
System.out.println("Square root of " + n + " = " + sqrt);
}
}
Question 3
Is it necessary to include 'default' case in a switch statement? Justify.
Answer
'default' case is optional in a switch statement. It is included to takecare of the situation when none of the case values are equal to the expression of switch statement. Consider the below example:
int number = 4;
switch(number) {
case 0:
System.out.println("Value of number is zero");
break;
case 1:
System.out.println("Value of number is one");
break;
case 2:
System.out.println("Value of number is two");
break;
default:
System.out.println("Value of number is greater than two");
break;
}
Here, value of number is 4 so case 0, case 1 and case 2 are not equal to number. Hence SOPLN of default case will get executed printing "Value of number is greater than two" to the console. If we don't include default case in this example then also the program is syntactically correct but we will not get any output when value of number is anything other than 0, 1 or 2.
Question 4
What will happen if 'break' statement is not used in a switch case? Explain.
Answer
Use of break statement in a switch case statement is optional. Omitting break statement will lead to fall through where program execution continues into the next case and onwards till end of switch statement is reached.
Question 5
When does 'Fall through' occur in a switch statement? Explain.
Answer
break statement at the end of case is optional. Omitting break leads to program execution continuing into the next case and onwards till a break statement is encountered or end of switch is reached. This is termed as Fall Through in switch case statement.
Question 6
What is a compound statement? Give an example.
Answer
Two or more statements can be grouped together by enclosing them between opening and closing curly braces. Such a group of statements is called a compound statement.
if (a < b) {
/*
* All statements within this set of braces
* form the compound statement
*/
System.out.println("a is less than b");
a = 10;
b = 20;
System.out.println("The value of a is " + a);
System.out.println("The value of b is " + b);
}
Question 7
Explain if-else-if construct with an example.
Answer
if-else-if construct is used to test multiple conditions and then take a decision. It provides multiple branching of control. Below is an example of if-else-if:
if (marks < 35)
System.out.println("Fail");
else if (marks < 60)
System.out.println("C grade");
else if (marks < 80)
System.out.println("B grade");
else if (marks < 95)
System.out.println("A grade");
else
System.out.println("A+ grade");
Question 8
Give two differences between the switch statement and the if-else statement.
Answer
switch | if-else |
---|---|
switch can only test if the expression is equal to any of its case constants | if-else can test for any boolean expression like less than, greater than, equal to, not equal to, etc. |
It is a multiple branching flow of control statement | It is a bi-directional flow of control statement |
Solutions to Unsolved Java Programs
Question 1
Write a program to input three numbers (positive or negative). If they are unequal then display the greatest number otherwise, display they are equal. The program also displays whether the numbers entered by the user are 'All positive', 'All negative' or 'Mixed numbers'.
Sample Input: 56, -15, 12
Sample Output:
The greatest number is 56
Entered numbers are mixed numbers.
import java.util.Scanner;
public class NumberAnalysis
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("Enter first number: ");
int a = in.nextInt();
System.out.print("Enter second number: ");
int b = in.nextInt();
System.out.print("Enter third number: ");
int c = in.nextInt();
int greatestNumber = a;
if ((a == b) && (b == c)) {
System.out.println("Entered numbers are equal.");
}
else {
if (b > greatestNumber) {
greatestNumber = b;
}
if (c > greatestNumber) {
greatestNumber = c;
}
System.out.println("The greatest number is " + greatestNumber);
if ((a >= 0) && (b >= 0) && (c >= 0)) {
System.out.println("Entered numbers are all positive numbers.");
}
else if((a < 0) && (b < 0) && (c < 0)) {
System.out.println("Entered numbers are all negative numbers.");
}
else {
System.out.println("Entered numbers are mixed numbers.");
}
}
}
}
Output
Question 2
A triangle is said to be an 'Equable Triangle', if the area of the triangle is equal to its perimeter. Write a program to enter three sides of a triangle. Check and print whether the triangle is equable or not.
For example, a right angled triangle with sides 5, 12 and 13 has its area and perimeter both equal to 30.
import java.util.Scanner;
public class EquableTriangle
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.println("Please enter the 3 sides of the triangle.");
System.out.print("Enter the first side: ");
double a = in.nextDouble();
System.out.print("Enter the second side: ");
double b = in.nextDouble();
System.out.print("Enter the third side: ");
double c = in.nextDouble();
double p = a + b + c;
double s = p / 2;
double area = Math.sqrt(s * (s - a) * (s - b) * (s - c));
if (area == p)
System.out.println("Entered triangle is equable.");
else
System.out.println("Entered triangle is not equable.");
}
}
Output
Question 3
A special two-digit number is such that when the sum of its digits is added to the product of its digits, the result is equal to the original two-digit number.
Example: Consider the number 59.
Sum of digits = 5 + 9 = 14
Product of digits = 5 * 9 = 45
Total of the sum of digits and product of digits = 14 + 45 = 59
Write a program to accept a two-digit number. Add the sum of its digits to the product of its digits. If the value is equal to the number input, display the message "Special 2 - digit number" otherwise, display the message "Not a special two-digit number".
import java.util.Scanner;
public class SpecialNumber
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a 2 digit number: ");
int orgNum = in.nextInt();
if (orgNum < 10 || orgNum > 99) {
System.out.println("Invalid input. Entered number is not a 2 digit number");
System.exit(0);
}
int num = orgNum;
int digit1 = num % 10;
int digit2 = num / 10;
num /= 10;
int digitSum = digit1 + digit2;
int digitProduct = digit1 * digit2;
int grandSum = digitSum + digitProduct;
if (grandSum == orgNum)
System.out.println("Special 2-digit number");
else
System.out.println("Not a special 2-digit number");
}
}
Output
Question 4
The standard form of quadratic equation is given by: ax2 + bx + c = 0, where d = b2 - 4ac, is known as discriminant that determines the nature of the roots of the equation as:
Condition | Nature |
---|---|
if d >= 0 | Roots are real |
if d < 0 | Roots are imaginary |
Write a program to determine the nature and the roots of a quadratic equation, taking a, b, c as input. If d = b2 - 4ac is greater than or equal to zero, then display 'Roots are real', otherwise display 'Roots are imaginary'. The roots are determined by the formula as:
r1 = (-b + √(b2 - 4ac)) / 2a , r2 = (-b - √(b2 - 4ac)) / 2a
import java.util.Scanner;
public class QuadEqRoots
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a: ");
int a = in.nextInt();
System.out.print("Enter b: ");
int b = in.nextInt();
System.out.print("Enter c: ");
int c = in.nextInt();
double d = Math.pow(b, 2) - (4 * a * c);
if (d >= 0) {
System.out.println("Roots are real.");
double r1 = (-b + Math.sqrt(d)) / (2 * a);
double r2 = (-b - Math.sqrt(d)) / (2 * a);
System.out.println("Roots of the equation are:");
System.out.println("r1=" + r1 + ", r2=" + r2);
}
else {
System.out.println("Roots are imaginary.");
}
}
}
Output
Question 5
An air-conditioned bus charges fare from the passengers based on the distance travelled as per the tariff given below:
Distance Travelled | Fare |
---|---|
Up to 10 km | Fixed charge ₹80 |
11 km to 20 km | ₹6/km |
21 km to 30 km | ₹5/km |
31 km and above | ₹4/km |
Design a program to input distance travelled by the passenger. Calculate and display the fare to be paid.
import java.util.Scanner;
public class BusFare
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("Enter distance travelled: ");
int dist = in.nextInt();
int fare = 0;
if (dist <= 0)
fare = 0;
else if (dist <= 10)
fare = 80;
else if (dist <= 20)
fare = 80 + (dist - 10) * 6;
else if (dist <= 30)
fare = 80 + 60 + (dist - 20) * 5;
else if (dist > 30)
fare = 80 + 60 + 50 + (dist - 30) * 4;
System.out.println("Fare = " + fare);
}
}
Output
Question 6
An ICSE school displays a notice on the school notice board regarding admission in Class XI for choosing stream according to marks obtained in English, Maths and Science in Class 10 Council Examination.
Marks obtained in different subjects | Stream |
---|---|
Eng, Maths and Science >= 80% | Pure Science |
Eng and Science >= 80%, Maths >= 60% | Bio. Science |
Eng, Maths and Science >= 60% | Commerce |
Print the appropriate stream allotted to a candidate. Write a program to accept marks in English, Maths and Science from the console.
import java.util.Scanner;
public class Admission
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("Enter marks in English: ");
int eng = in.nextInt();
System.out.print("Enter marks in Maths: ");
int maths = in.nextInt();
System.out.print("Enter marks in Science: ");
int sci = in.nextInt();
if (eng >= 80 && sci >= 80 && maths >= 80)
System.out.println("Pure Science");
else if (eng >= 80 && sci >= 80 && maths >= 60)
System.out.println("Bio. Science");
else if (eng >= 60 && sci >= 60 && maths >= 60)
System.out.println("Commerce");
else
System.out.println("Cannot allot stream");
}
}
Output
Question 7
A bank announces new rates for Term Deposit Schemes for their customers and Senior Citizens as given below:
Term | Rate of Interest (General) | Rate of Interest (Senior Citizen) |
---|---|---|
Up to 1 year | 7.5% | 8.0% |
Up to 2 years | 8.5% | 9.0% |
Up to 3 years | 9.5% | 10.0% |
More than 3 years | 10.0% | 11.0% |
The 'senior citizen' rates are applicable to the customers whose age is 60 years or more. Write a program to accept the sum (p) in term deposit scheme, age of the customer and the term. The program displays the information in the following format:
Amount Deposited | Term | Age | Interest earned | Amount Paid |
---|---|---|---|---|
xxx | xxx | xxx | xxx | xxx |
import java.util.Scanner;
public class BankDeposit
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("Enter sum: ");
double sum = in.nextDouble();
System.out.print("Enter age: ");
int age = in.nextInt();
System.out.print("Enter term: ");
double term = in.nextDouble();
double si = 0.0;
if (term <= 1 && age < 60)
si = (sum * 7.5 * term) / 100;
else if (term <= 1 && age >= 60)
si = (sum * 8.0 * term) / 100;
else if (term <= 2 && age < 60)
si = (sum * 8.5 * term) / 100;
else if (term <= 2 && age >= 60)
si = (sum * 9.0 * term) / 100;
else if (term <= 3 && age < 60)
si = (sum * 9.5 * term) / 100;
else if (term <= 3 && age >= 60)
si = (sum * 10.0 * term) / 100;
else if (term > 3 && age < 60)
si = (sum * 10.0 * term) / 100;
else if (term > 3 && age >= 60)
si = (sum * 11.0 * term) / 100;
double amt = sum + si;
System.out.println("Amount Deposited: " + sum);
System.out.println("Term: " + term);
System.out.println("Age: " + age);
System.out.println("Interest Earned: " + si);
System.out.println("Amount Paid: " + amt);
}
}
Output
Question 8
A courier company charges differently for 'Ordinary' booking and 'Express' booking based on the weight of the parcel as per the tariff given below:
Weight of parcel | Ordinary booking | Express booking |
---|---|---|
Up to 100 gm | ₹80 | ₹100 |
101 to 500 gm | ₹150 | ₹200 |
501 gm to 1000 gm | ₹210 | ₹250 |
More than 1000 gm | ₹250 | ₹300 |
Write a program to input weight of a parcel and type of booking (`O' for ordinary and 'E' for express). Calculate and print the charges accordingly.
import java.util.Scanner;
public class CourierCompany
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.print("Enter weight of parcel: ");
double wt = in.nextDouble();
System.out.print("Enter type of booking: ");
char type = in.next().charAt(0);
double charge = 0;
if (wt <= 0)
charge = 0;
else if (wt <= 100 && type == 'O')
charge = 80;
else if (wt <= 100 && type == 'E')
charge = 100;
else if (wt <= 500 && type == 'O')
charge = 150;
else if (wt <= 500 && type == 'E')
charge = 200;
else if (wt <= 1000 && type == 'O')
charge = 210;
else if (wt <= 1000 && type == 'E')
charge = 250;
else if (wt > 1000 && type == 'O')
charge = 250;
else if (wt > 1000 && type == 'E')
charge = 300;
System.out.println("Parcel charges = " + charge);
}
}