Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 186


Previous 1060 Stories (530 Pages, 2 Per Page) Next

The Java Lesson 13: Using the Math class

Go to all tips in Java Lessons by Jon Huhtala
All Java Lessons contents page | Java Lesson 1 | Java Lesson 2 | Java Lesson 3 | Java Lesson 4 | Java Lesson 5 | Java Lesson 6 | Java Lesson 7 | Java Lesson 8 | Java Lesson 9 | Java Lesson 10 | Java Lesson 11 | Java Lesson 12 | Java Lesson 13 | Java Lesson 14 | Java Lesson 15 | Java Lesson 16 | Java Lesson 17 | Java Lesson 18 | Java Lesson 19 | Java Lesson 20 | Java Lesson 21 | Java Lesson 22 | Java Lesson 23 | Java Lesson 24 | Java Lesson 25 | Java Lesson 26 | Java Lesson 27 | Java Lesson 28 | Java Lesson 29 | Java Lesson 30 | Java Lesson 31 | Java Lesson 32 | Java Lesson 33 | Java Lesson 34 | Java Lesson 35 | Java Lesson 36 | Java Lesson 37 | Java Lesson 38 | Java Lesson 39 | Java Lesson 40 | Java Lesson 41 | Java Lesson 42 | Java Lesson 43 | Java Lesson 44 | Java Lesson 45 | Java Lesson 46

The Java Lesson 13

Using the Math class


Using pre-written Java code

  • The Java compiler makes it easy for programmers to use "packages" of existing code. Most packages contain dozens of related classes with each having a number of useful methods. Among the most frequently used packages are:

Package

Contents

java.applet

Supports Java applets (small programs that may be embedded inside other applications - such as Web pages)

java.awt

The "abstract windows toolkit" supports graphical, Windows programming

java.lang

Supports Java language extensions and mathematical tools

java.text

Supports text formatting and manipulation

java.util

A set of general purpose utility classes

Beginning Java programmers will be most interested in the last three of these packages.
  • The import reserved word is used in Java to make external classes of other packages available to the current source file through use of an abbreviated name. For example, the following statement makes it possible to reference all classes in the java.util package:

import java.util.*;

Notes:

  1. Code import statements at the beginning of the Java source file prior to the class header.

  2. The only package that doesn't require an import statement is java.lang. Its contents are so frequently used that it is automatically available.

  1. Optionally, only a selected class within a particular package might be specified, such as

import java.util.TimeZone;

which has features to work with a time zone and determine daylight savings.

  1. Without an import statement pre-written code can still be accessed, but every time you reference a class or a class feature (such as a method) you would need to use its package name as a qualifier. For example,

java.util.TimeZone.getDefault()

instead of

TimeZone.getDefault()

would be required to retrieve the default time zone of the platform.

  • Use the help facility to learn about Java packages, their classes, and the features of their classes. In this lesson, we will explore the use of the Math class in the java.lang package.


The Math class

  • Is part of the java.lang package

  • Contains class methods for performing basic numeric operations such as random number generation, rounding, absolute value, exponentiation, square root, logarithmic functions, and trigonometric functions

  • Contains two frequently used public field. These are:

Field

Usage

E

The double value that is closer than any other to e, the base of the natural logarithms

PI

The double value that is closer than any other to pi, the ratio of the circumference of a circle to its diameter

To display the value of e and the value of pi, you may run the following program:

public class App {
public static void main(String[] args) {
System.out.println("e = " + Math.E);
System.out.println("pi = " + Math.PI);

}
}

Note: Because E and PI are fields of the Math class and not methods of the Math class, no parenthesis are coded after their name. Parenthesis are only used to indicate a method call.

  • Has a number of useful class methods. Among them are the following (with detailed parameter requirements and the returned data type omitted for brevity):

Method

Usage

abs()

Returns the absolute value of a number

ceil()

Returns the smallest (closest to negative infinity) double value that is not less than the argument and is equal to a mathematical integer

cos()

Returns the trigonometric cosine of an angle measured in radians

floor()

Returns the largest (closest to positive infinity) double value that is not greater than the argument and is equal to a mathematical integer

pow()

Returns the value of the first argument raised to the power of the second argument

random()

Returns a double value greater than or equal to 0.0 and less than 1.0

round()

Rounds a real number to the nearest integer value

sin()

Returns the trigonometric sine of an angle measured in radians

sqrt()

Returns the correctly rounded positive square root of a double value

toDegrees()

Converts an angle measured in radians to the equivalent angle measured in degrees

toRadians()

Converts an angle measured in degrees to the equivalent angle measured in radians

Some of the above methods are "overloaded" to accept different parameter types. Overloading will be covered in a later lesson.

Consult the help facility of your Java development environment or the Java API for more details.

Sample programs

The following small samples will help you understand how easy it is to use the class methods of the Math class:

Example 1: Performing some miscellaneous mathematical calculations on a number

public class App {
public static void main(String[] args) {

double x;
char again;

do {
Utility.separator(50, '~');
System.out.print("Enter a number: ");
x = Keyboard.readDouble();
Utility.skip();
System.out.println(" Ceiling = " + Math.ceil(x));
System.out.println(" Floor = " + Math.floor(x));
System.out.println(" Rounded = " + Math.round(x));
System.out.println(" Squared = " + Math.pow(x, 2));
System.out.println(" Square root = " + Math.sqrt(x));
Utility.skip();
System.out.print("Again? (Y/N): ");
again = Keyboard.readChar();
} while (again == 'Y' || again == 'y');
}
}

Note: Try several different values when testing this program to see what the various methods do (including a negative number).

Example 2: Simulating 100 rolls of a single die to generate an integer value from 1 to 6

public class App {
public static void main(String[] args) {

int value;

for (int i = 1; i <= 100; i++) {
value = (int) (((Math.random() * 1000) % 6) + 1);
System.out.println("Roll " + i + ": " + value);
}
}
}

Note: The random() method returns a double that is less than 1.0 and greater than or equal to zero. Multiplying by 1000 provides extra digits on the left of the decimal point so that modulo 6 can produce a fairly random value from 0 to 5. By adding 1 and casting to an int, the die's value can be stored in an int variable.

Example 3: Calculating the area of a circle

public class App {
public static void main(String[] args) {

double radius;
double area;
char again;

do {
Utility.separator(50, '~');
System.out.print("Enter the radius: ");
radius = Keyboard.readDouble();
Utility.skip();
if (radius <= 0) {
System.out.println(" Invalid radius");
}
else {
area = Math.PI * Math.pow(radius, 2);
System.out.println(" Area = " + area);
}
Utility.skip();
System.out.print("Again? (Y/N): ");
again = Keyboard.readChar();
} while (again == 'Y' || again == 'y');
}
}

Note: The Math.pow() method is used to square the radius of the circle.

Lab exercise for Ferris students

E-mail your answers to this assignment no later than the due date listed in the class schedule.

Review questions

  1. Which of the following import statements are required in order to use the Math class and its features?

  1. import java.lang.*;

  2. import java.lang.Math

  3. import java.util.*;

  4. import java.util.Math

  5. none of the above

  1. If someNumber is a short variable with a value of -25, which one of the answers below is true of attempting to compile and execute the following statement?

System.out.println("Root = " + Math.sqrt(someNumber));

  1. the statement will not compile

  2. the statement will compile but an error will occur at run time

  3. the statement will compile and run to display "Root = 5.0" on the console

  4. the statement will compile and run to display "Root = -5.0" on the console

  5. the statement will compile and run to display "Root = NaN" on the console

  1. Assuming all unseen code is correct, what will happen when an attempt is made to compile and execute the following statements?

int y = Math.pow(2, 3);
System.out.println("Result = " + y);

  1. the first statement will not compile

  2. the second statement will not compile

  3. the statements will compile but an error will occur at run time when the first statement is executed

  4. the statements will compile and run. The message "Result = 8" will be displayed on the console.

  5. the statements will compile and run. The message "Result = 9" will be displayed on the console.

  1. Which one statement is true about the application shown below? The line numbers are for reference purposes only.

1
2
3
4
5
6
7
8
9
10
11
12
public class App {
public static void main(String[] args) {
double x = Math.random();
double y = Math.ceil(x);
if (x == y) {
System.out.println("Biggest number");
}
else {
System.out.println("Smaller number");
}
}
}
  1. the program will compile and run but the output cannot be determined

  2. the program will compile and run to always display "Biggest number"

  3. the program will compile and run to always display "Smaller number"

  4. the program will compile but an error will occur at run time

  5. a compile error will occur because the Math class was not imported


17668 bytes more | 1 comment | Printer Friendly Page  Send to a Friend | Score: 5
Posted by jalex on Wednesday, March 17, 2004 (00:00:00) (23703 reads)

What if a thread doesn't respond to Thread.interrupt?

Go to all tips in Threads

Question: What if a thread doesn't respond to Thread.interrupt?

Answer: In some cases, you can use application specific tricks. For example, if a thread is waiting on a known socket, you can close the socket to cause the thread to return immediately. Unfortunately, there really isn't any technique that works in general. It should be noted that in all situations where a waiting thread doesn't respond to Thread.interrupt, it wouldn't respond to Thread.stop either. Such cases include deliberate denial-of-service attacks, and I/O operations for which thread.stop and thread.interrupt do not work properly.

this question/answer was published based on SUN's article:
http://java.sun.com/products/jdk/1.2/docs/guide/misc/threadPrimitiveDeprecation.html

*******************************************
Our older tips: March 22, 2001 - October 21, 2002 READ HERE
All published and not published on the site tips read HERE



16 comments | Printer Friendly Page  Send to a Friend | Score: 1
Posted by jalex on Tuesday, March 16, 2004 (00:00:00) (3390 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187|
186
| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy