Upload
surendra-singh-chauhan
View
219
Download
0
Embed Size (px)
Citation preview
8/8/2019 java 2 (2)
1/11
[HOMEWORK II] March 9, 2010
HOMEWORK-IIModern Programming tools and Techniques
Homework Title / No. : IInd Course Code : CAP 310
Course Instructor : BalRaj Kumar Tutor (if applicable) : BalRaj Kumar
Date of Allotment : Date of submission : 21-Feb-10
Students Roll No: RTb805A17 Section No RTb805
Declaration:
I declare that this assignment is my individual work. I have not copied from any other students work or
from any other source except where due acknowledgment is made explicitly in the text, nor has any part
been written for me by another person.
Students Signature : Joginder singh
Evaluators comments:
_____________________________________________________________________
Marks obtained : ___________ out of ______________________
Part-I
Q:1 Explain the term:a) Widening and Narrowing operand conversion
b) Overflow, Underflow, and Exceptions
Ans (a) Widening and Narrowing operand conversionA specific conversion from type S to type T allows an expression of type S to be treated at
compile time as if it had type T instead. In some cases this will require a corresponding action at
run time to check the validity of the conversion or to translate the run-time value of the
expression into a form appropriate for the new type T. For example:
8/8/2019 java 2 (2)
2/11
[HOMEWORK II] March 9, 2010
A conversion from type int to type long requires run-time sign-extension of a 32-bit
integer value to the 64-bit long representation. No information is lost.
A conversion from type double to type long requires a nontrivial translation from a 64-bit
floating-point value to the 64-bit integer representation. Depending on the actual run-time value,
information may be lost.
In every conversion context, only certain specific conversions are permitted. For convenience of
description, the specific conversions that are possible in the Java programming language are
grouped into several broad categories:
Identity conversions
Widening primitive conversions
Narrowing primitive conversions
Widening reference conversions
Narrowing reference conversions
Widening Primitive Conversion
The following 19 specific conversions on primitive types are called the widening primitive
conversions:
byte to short, int, long, float, or double
short to int, long, float, or double
char to int, long, float, or double
int to long, float, or double
long to float or double
float to double
Widening primitive conversions do not lose information about the overall magnitude of a
numeric value. Indeed, conversions widening from an integral type to another integral type do not
lose any information at all; the numeric value is preserved exactly.
Conversion of an int or a long value to float, or of a long value to double, may result in loss ofprecision-that is, the result may lose some of the least significant bits of the value
A widening conversion of a signed integer value to an integral type T simply sign-extends the
two's-complement representation of the integer value to fill the wider format.
A widening conversion of a char to an integral type T zero-extends the representation of
the char value to fill the wider format.
8/8/2019 java 2 (2)
3/11
[HOMEWORK II] March 9, 2010
Despite the fact that loss of precision may occur, widening conversions among primitive types
never result in a run-time exception
An example of a widening conversion that loses precision:
class Test {
public static void main(String[] args) {
int b = 1234567890;
float approx = b;
System.out.println(b - (int)approx);
}
}
which prints:
-46
thus indicating that information was lost during the conversion from type int to type float because
values of type float are not precise to nine significant digits.
Narrowing Primitive Conversions
The following 22 specific conversions on primitive types are called the narrowing primitive
conversions:
short to byte or char
char to byte or short
int to byte, short, or char
long to byte, short, char, or int
float to byte, short, char, int, or long
double to byte, short, char, int, long, or float
Narrowing conversions may lose information about the overall magnitude of a numeric value and
may also lose precision.
The example:
class Test {
public static void main(String[] args) {
float fmin = Float.NEGATIVE_INFINITY;
float fmax = Float.POSITIVE_INFINITY;
8/8/2019 java 2 (2)
4/11
[HOMEWORK II] March 9, 2010
System.out.println("long: " + (long)fmin +
".." + (long)fmax);
System.out.println("int: " + (int)fmin +
".." + (int)fmax);
System.out.println("short: " + (short)fmin +
".." + (short)fmax);
System.out.println("char: " + (int)(char)fmin +
".." + (int)(char)fmax);
System.out.println("byte: " + (byte)fmin +
".." + (byte)fmax);
}
}
produces the output:
long: -9223372036854775808..9223372036854775807
int: -2147483648..2147483647
short: 0..-1
char: 0..65535
byte: 0..-1
Ans (b) Overflow, Underflow, and Exceptions
Overflow And Underflow
Overflow and underflow is a condition where you cross the limit of prescribed size for a datatype. When overflow or underflow condition is reached, either the program will crash or the
underlying implementation of the programming language will have its own way of handingthings.
In Java arithmetic operators dont report overflow and underflow conditions. They simply
swallow it! It is a very dangerous thing to do. If one doesnt know how Java handles overflow
8/8/2019 java 2 (2)
5/11
[HOMEWORK II] March 9, 2010
and underflow then he will not be aware of things happening behind while doing arithmetic
operations.
Overflow and Underflow in Java int operators
Arithmetic integer operations are performed in 32-bit precision. When the resultant value of anoperation is larger than 32 bits (the maximum size an int variable can hold) then the low 32 bits
only taken into consideration and the high order bits are discarded. When the MSB (most
significant bit) is 1 then the value is treated as negative.
Overflow and Underflow in Java floating point operators
While using java floating point operators, overflow will result in Infinity and underflow will
result 0.0 As a general rule here also Java doesnt throw an error or exception for overflow and
underflow.
Exceptions Exceptions in java are any abnormal, unexpected events or extraordinaryconditions that may occur at runtime. They could be file not found exception, unable to get
connection exception and so on. On such conditions java throws an exception object. JavaExceptions are basically Java objects. No Project can never escape a java error exception.
Java exception handling is used to handle error conditions in a program systematically by taking
the necessary action. Exception handlers can be written to catch a specific exception such as
Number Format exception, or an entire group of exceptions by using a generic exceptionhandlers. Any exceptions not specifically handled within a Java program are caught by the Java
run time environment
An exception is a subclass of the Exception/Error class, both of which are subclasses of the
Throwable class. Java exceptions are raised with the throw keyword and handled within a catchblock.
A Program Showing How the JVM throws an Exception at runtime
public class DivideException
{public static void main(String[] args)
{division(100,4);
division(100,0);System.out.println("Exit main().");
}
public static void division(int totalSum, int totalNumber){
System.out.println("Computing Division.");
8/8/2019 java 2 (2)
6/11
[HOMEWORK II] March 9, 2010
int average = totalSum/totalNumber;
System.out.println("Average : "+ average);
}}
Q:2 Write a code segment that circularly shifts the values of int variable a, b, c and d, for
example if the variable values are initially 10, 20, 30 and 40 respectively, then the final
values are 40, 10, 20 and 30 respectively. It may be convenient to introduce a temporary
variable to accomplish this task.
Answer:
class circularsfts
{
public static void main(String args[])
{
int a[]={10,20,30,40};
int temp,i,c;
temp=0;
c=a[3];
for(i=3;i>0;i--)
{a[i]=temp;
a[i]=a[i-1];
}
a[0]=c;System.out.println("the circular sifted aray is ");
for(i=0;i
8/8/2019 java 2 (2)
7/11
[HOMEWORK II] March 9, 2010
Q:3 How many parameters does a default constructor require? Why?
Answer If we don't define a constructor for a class, a default parameter less constructor is
automatically created by the compiler. The default constructor calls the default parent constructor
(super ()) and initializes all instance variables to default value (zero for numeric types, null for
object references, and false for Booleans ).
If you define any constructor for your class, no default constructor is automatically created. Thus
default constructor requires no parameter.
Part B
Q:4 Write an array definition for an array coefficient that is initialized with the following values
1.4, 4.30, 5.12, 6.9, 6.21, 7.31, 11.4, 11.28 and 11.29.
Answer :
import java.util.*;
class array_float
{
public static void main(String args[])
{
float arr1[]={1.4, 4.30, 5.12, 6.9, 6.21, 7.31, 11.4, 11.28 ,11.29};
for(i=0;i
8/8/2019 java 2 (2)
8/11
[HOMEWORK II] March 9, 2010
(b) Sets the value of each element in score so that it matches its subscript value.
(c) Displays the values of the last five elements of scores.
(d) Is the value 3.1415 a legal subscript value for score? Explain.
(e) Is the value 3.1415 a legal element value for score? Explain.
Answer :
Array score with 40 elements
import java.util.*;
class Ele_score
{public static void main(String arg[])
{
Scanner input=new Scanner(System.in);
double score[ ]=new double[40];int n;
System.out.print("array score:");
for(i=0;i
8/8/2019 java 2 (2)
9/11
[HOMEWORK II] March 9, 2010
Q:6 Program to input a set of names into an array and print each name with the no. of characters
in it and print each name by replacing all occurrences of the alphabet a and A with the
symbol *. Use at least two user-defined classes.
Answer :
import java.util.*;
class print _element
{
Void find(char a[ ][ ])
{
int i,j;
for(i=0;i
8/8/2019 java 2 (2)
10/11
[HOMEWORK II] March 9, 2010
System.out.print ("\t"+a[i][j]);
}
}
}
}
class jogin
{
public static void main(String args[])
{
finda fa=new find();
Scanner input=new Scanner ();
char name[ ][ ]=new int [10][30];
int ii.jj;
for(ii=0;ii
8/8/2019 java 2 (2)
11/11
[HOMEWORK II] March 9, 2010