how to convert pdf to jpg in c# windows application : Create secure pdf Library software class asp.net wpf web page ajax javanotes6-linked11-part278

CHAPTER 3. CONTROL
97
else if (units.equals("mile") || units.equals("miles")
|| units.equals("mi")) {
inches = measurement * 12 * 5280;
}
else {
TextIO.putln("Sorry, but I don’t understand \""
+ units + "\".");
continue; // back to start of while loop
}
/* Convert measurement in inches to feet, yards, and miles. */
feet = inches / 12;
yards = inches / 36;
miles = inches / (12*5280);
/* Output measurement in terms of each unit of measure. */
TextIO.putln();
TextIO.putln("That’s equivalent to:");
TextIO.putf("%12.5g", inches);
TextIO.putln(" inches");
TextIO.putf("%12.5g", feet);
TextIO.putln(" feet");
TextIO.putf("%12.5g", yards);
TextIO.putln(" yards");
TextIO.putf("%12.5g", miles);
TextIO.putln(" miles");
TextIO.putln();
} // end while
TextIO.putln();
TextIO.putln("OK! Bye for now.");
} // end main()
} // end class LengthConverter
(Note that this program uses formatted output with the “g” format specifier. In this pro-
gram, we have no control over how large or how small the numbers might be. It could easily
make sense for the user to enter very large or very small measurements. The “g” format will
print a real number in exponential form if it is very large or very small, and in the usual decimal
form otherwise. Remember that in the format specification %12.5g, the 5 is the total number
of significant digits that are to be printed, so we will always get the same number of significant
digits in the output, no matter what the size of the number. If we had used an “f” format
specifier such as %12.5f, the output would be in decimal form with 5 digits after the decimal
point. This would print the number 0.000000000745482 as 0.00000, with no significant digits
at all! With the “g” format specifier, the output would be 7.4549e-10.)
3.5.4 The Empty Statement
As a final note in this section, I will mention one more type of statement in Java: the empty
statement. This is a statement that consists simply of asemicolon andwhich tells the computer
Create secure pdf - C# PDF Digital Signature Library: add, remove, update PDF digital signatures in C#.net, ASP.NET, MVC, WPF
Help to Improve the Security of Your PDF File by Adding Digital Signatures
add security to pdf in reader; create secure pdf
Create secure pdf - VB.NET PDF Digital Signature Library: add, remove, update PDF digital signatures in vb.net, ASP.NET, MVC, WPF
Guide VB.NET Programmers to Improve the Security of Your PDF File by Adding Digital Signatures
creating a secure pdf document; pdf security settings
CHAPTER 3. CONTROL
98
to do nothing. The existence of the empty statement makes the following legal, even though
you would not ordinarily see a semicolon after a } :
if (x < 0) {
x = -x;
};
The semicolon is legal after the }, but the computer considers it to be an empty statement,
not part of the if statement. Occasionally, you might find yourself using the empty statement
when what you mean is, in fact, “do nothing.” For example, the rather contrived if statement
if ( done )
; // Empty statement
else
System.out.println( "Not done yet.");
does nothing when the boolean variable done is true, and prints out “Not done yet” when
it is false. You can’t just leave out the semicolon in this example, since Java syntax requires
an actual statement between the if and the else. I prefer, though, to use an empty block,
consisting of { and } with nothing between, for such cases.
Occasionally, stray empty statements can cause annoying, hard-to-find errors in a program.
For example, the following program segment prints out “Hello” just once, not ten times:
for (int i = 0; i < 10; i++);
System.out.println("Hello");
Why? Because the “;” at the end of the first line is a statement, and it is this statement that is
executed ten times. The System.out.println statement is not really inside the for statement
at all, so it is executed just once, after the for loop has completed.
3.6 The switch Statement
T
he second branching statement in Java is the switch statement, which is introduced
(online)
in this section. The switch statement is used far less often than the if statement, but it is
sometimes useful for expressing a certain type of multi-way branch.
3.6.1 The Basic switch Statement
Aswitch statement allows you to test the value of an expression and, depending on that value,
to jump directly to some location within the switch statement. Only expressions of certain
types can be used. The value of the expression can be one of the primitive integer types int,
short, or byte. It can be the primitive char type. Or, as we will see later in this section, it
can be an enumerated type. In Java 7, Strings are also allowed. In particular, the expression
cannot be a real number, and prior to Java 7, it cannot be a String. The positions that you
can jump to are marked with case labels that take the form: “case constant:”. This marks
the position the computer jumps to when the expression evaluates to the given constant. As
the final case in a switch statement you can, optionally, use the label “default:”, which provides
adefault jump point that is used when the value of the expression is not listed in any case
label.
Aswitch statement, as it is most often used, has the form:
C# Create PDF Library SDK to convert PDF from other file formats
& thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry-standard PDF document file.
change pdf document security; convert secure pdf to word
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
NET HTML5 PDF Viewer enable users to view create PDF from multiple PDF Editor also provides C#.NET users secure solutions for PDF document protection
decrypt pdf without password; pdf security options
CHAPTER 3. CONTROL
99
switch (expression) {
case constant-1:
statements-1
break;
case constant-2:
statements-2
break;
.
.
// (more cases)
.
case constant-N:
statements-N
break;
default: // optional default case
statements-(N+1)
} // end of switch statement
The break statements are technically optional. The effect of a break is to make the computer
jump to the end of the switch statement. If you leave out the break statement, the computer
will just forge ahead after completing one case and will execute the statements associated with
the next case label. This is rarely what you want, but it is legal. (I will note here—although
you won’t understand it until you get to the next chapter—that inside a subroutine, the break
statement is sometimes replaced by a return statement.)
Note that you can leave out one of the groups of statements entirely (including the break).
You then have two case labels in a row, containing two different constants. This just means
that the computer will jump to the same place and perform the same action for each of the two
constants.
Here is an example of a switch statement. This is not a useful example, but it should be
easy for you to follow. Note, by the way, that the constants in the case labels don’t have to be
in any particular order, as long as they are all different:
switch ( N ) {
// (Assume N is an integer variable.)
case 1:
System.out.println("The number is 1.");
break;
case 2:
case 4:
case 8:
System.out.println("The number is 2, 4, or 8.");
System.out.println("(That’s a power of 2!)");
break;
case 3:
case 6:
case 9:
System.out.println("The number is 3, 6, or 9.");
System.out.println("(That’s a multiple of 3!)");
break;
case 5:
System.out.println("The number is 5.");
break;
default:
System.out.println("The number is 7 or is outside the range 1 to 9.");
}
C# PDF Library SDK to view, edit, convert, process PDF file for C#
XDoc.PDF SDK provides users secure methods to protect PDF added to a specific location on PDF file page. In addition, you can easily create, modify, and delete
decrypt pdf password online; convert locked pdf to word doc
C# Word - Word Creating in C#.NET
Word SDK for .NET, is a robust & thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry
decrypt pdf file online; create encrypted pdf
CHAPTER 3. CONTROL
100
The switch statement is pretty primitive as control structures go, and it’s easy to make mis-
takes when you use it. Java takes all its control structures directly from the older programming
languages C and C++. The switch statement is certainly one place where the designers of Java
should have introduced some improvements.
3.6.2 Menus and switch Statements
One application of switch statements is in processing menus. A menu is a list of options.
The user selects one of the options. The computer has to respond to each possible choice in a
different way. If the options are numbered 1, 2, ..., then the number of the chosen option can
be used in a switch statement to select the proper response.
In a TextIO-based program, the menu can be presented as a numbered list of options, and
the user can choose an option by typing in its number. Here is an example that could be used
in a variation of the LengthConverter example from the previous section:
int optionNumber;
// Option number from menu, selected by user.
double measurement; // A numerical measurement, input by the user.
//
The unit of measurement depends on which
//
option the user has selected.
double inches;
// The same measurement, converted into inches.
/* Display menu and get user’s selected option number. */
TextIO.putln("What unit of measurement does your input use?");
TextIO.putln();
TextIO.putln("
1. inches");
TextIO.putln("
2. feet");
TextIO.putln("
3. yards");
TextIO.putln("
4. miles");
TextIO.putln();
TextIO.putln("Enter the number of your choice: ");
optionNumber = TextIO.getlnInt();
/* Read user’s measurement and convert to inches. */
switch ( optionNumber ) {
case 1:
TextIO.putln("Enter the number of inches: ");
measurement = TextIO.getlnDouble();
inches = measurement;
break;
case 2:
TextIO.putln("Enter the number of feet: ");
measurement = TextIO.getlnDouble();
inches = measurement * 12;
break;
case 3:
TextIO.putln("Enter the number of yards: ");
measurement = TextIO.getlnDouble();
inches = measurement * 36;
break;
case 4:
TextIO.putln("Enter the number of miles: ");
measurement = TextIO.getlnDouble();
C# PowerPoint - PowerPoint Creating in C#.NET
SDK for .NET, is a robust & thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry
convert locked pdf to word; secure pdf remove
C# Word - Word Create or Build in C#.NET
& thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry Create Word From PDF.
create pdf security; copy locked pdf
CHAPTER 3. CONTROL
101
inches = measurement * 12 * 5280;
break;
default:
TextIO.putln("Error! Illegal option number! I quit!");
System.exit(1);
} // end switch
/* Now go on to convert inches to feet, yards, and miles... */
In Java 7, this example might be rewritten using a String in the switch statement:
String units;
// Unit of measurement, entered by user.
double measurement; // A numerical measurement, input by the user.
double inches;
// The same measurement, converted into inches.
/* Read the user’s unit of measurement. */
TextIO.putln("What unit of measurement does your input use?");
TextIO.put("inches, feet, yards, or miles ?");
units = TextIO.getln().toLowerCase();
/* Read user’s measurement and convert to inches. */
TextIO.put("Enter the number of " + units + ": ");
measurement = TextIO.getlnDouble();
switch ( units ) { // Requires Java 7 or higher!
case "inches":
inches = measurement;
break;
case "feet":
inches = measurement * 12;
break;
case "yards":
inches = measurement * 36;
break;
case "miles":
inches = measurement * 12 * 5280;
break;
default:
TextIO.putln("Wait a minute! Illegal unit of measure! I quit!");
System.exit(1);
} // end switch
3.6.3 Enums in switch Statements
The type of the expression in a switch can be an enumerated type. In that case, the constants
in the case labels must be values from the enumerated type. For example, if the type of the
expression is the enumerated type Season defined by
enum Season { SPRING, SUMMER, FALL, WINTER }
then the constants in the case label must be chosen from among the values Season.SPRING,
Season.SUMMER, Season.FALL, or Season.WINTER. However, there is another quirk in the syn-
tax: when an enum constant is used in a case label, only the simple name, such as “SPRING”
can be used, not the full name “Season.SPRING”. Of course, the computer already knows that
the value in the case label must belong to the enumerated type, since it can tell that from the
RasterEdge.com General FAQs for Products
not the product end user, please copy and email the secure download link are dedicated to provide powerful & profession imaging controls, PDF document, image
convert locked pdf to word online; can print pdf security
XDoc.HTML5 Viewer for .NET, All Mature Features Introductions
for .NET allows .NET developers to search text-based documents, like PDF, Microsoft Office show or hide control for text selecting in order to secure your web
pdf encryption; pdf secure signature
CHAPTER 3. CONTROL
102
type of expression used, so there is really no need to specify the type name in the constant. As
an example, suppose that currentSeason is a variable of type Season. Then we could have the
switch statement:
switch ( currentSeason ) {
case WINTER:
// ( NOT Season.WINTER ! )
System.out.println("December, January, February");
break;
case SPRING:
System.out.println("March, April, May");
break;
case SUMMER:
System.out.println("June, July, August");
break;
case FALL:
System.out.println("September, October, November");
break;
}
3.6.4 Definite Assignment
As a somewhat more realistic example, the following switch statement makes a ran-
dom choice among three possible alternatives. Recall that the value of the expression
(int)(3*Math.random()) is one of the integers 0, 1, or 2, selected at random with equal
probability, so the switch statement below will assign one of the values "Rock", "Scissors",
"Paper" to computerMove, with probability 1/3 for each case. Although the switch statement
in this example is correct, this code segment as a whole illustrates a subtle syntax error that
sometimes comes up:
String computerMove;
switch ( (int)(3*Math.random()) ) {
case 0:
computerMove = "Rock";
break;
case 1:
computerMove = "Scissors";
break;
case 2:
computerMove = "Paper";
break;
}
System.out.println("Computer’s move is " + computerMove);
// ERROR!
You probably haven’t spotted the error, since it’s not an error from a human point of view.
The computer reports the last line to be an error, because the variable computerMove might
not have been assigned a value. In Java, it is only legal to use the value of a variable if a
value has already been definitely assigned to that variable. This means that the computer
must be able to prove, just from looking at the code when the program is compiled, that the
variable must have been assigned a value. Unfortunately, the computer only has a few simple
rules that it can apply to make the determination. In this case, it sees a switch statement in
which the type of expression is int and in which the cases that are covered are 0, 1, and 2. For
other values of the expression, computerMove is never assigned a value. So, the computer thinks
C# Excel - Excel Creating in C#.NET
SDK for .NET, is a robust & thread-safe .NET solution which provides a reliable and quick approach for C# developers to create a highly-secure and industry
pdf password encryption; decrypt a pdf
VB.NET Word: VB Tutorial to Convert Word to Other Formats in .NET
Word converting assembly toolkit also allows developers to create a fully platforms, then converting Word to a more secure document format PDF will be
create pdf the security level is set to high; copy paste encrypted pdf
CHAPTER 3. CONTROL
103
computerMove might still be undefined after the switch statement. Now, infact, this isn’t true:
0, 1, and 2 are actually the only possible values of the expression (int)(3*Math.random()),
but the computer isn’t smart enough to figure that out. The easiest way to fix the problem
is to replace the case label case 2 with default. The computer can then see that a value is
assigned to computerMove in all cases.
More generally, we say that a value has been definitely assigned to a variable at a given
point in a program if every execution path leading from the declaration of the variable to that
point in the code includes an assignment to the variable. This rule takes into account loops
and if statements as well as switch statements. For example, the following two if statements
both do the same thing as the switch statement given above, but only the one on the right
definitely assigns a value to computerMove:
String computerMove;
String computerMove;
int rand;
int rand;
rand = (int)(3*Math.random());
rand = (int)(3*Math.random());
if ( rand == 0 )
if ( rand == 0 )
computerMove = "Rock";
computerMove = "Rock";
else if ( rand == 1 )
else if ( rand == 1 )
computerMove = "Scissors";
computerMove = "Scissors";
else if ( rand == 2 )
else
computerMove = "Paper";
computerMove = "Paper";
In the code on the left, the test “if ( rand == 2 )” in the final else clause is unnecessary
because if rand is not 0 or 1, the only remaining possibility is that rand == 2. The computer,
however, can’t figure that out.
3.7 Introduction to Exceptions and try..catch
I
naddition to the control structures that determine the normal flow of control in a pro-
(online)
gram, Java has a way to deal with “exceptional” cases that throw the flow of control off its
normal track. When an error occurs during the execution of a program, the default behavior
is to terminate the program and to print an error message. However, Java makes it possible to
“catch” such errors and program a response different from simply letting the program crash.
This is done with the try..catch statement. In this section, we will take a preliminary, incom-
plete look at using try..catch to handle errors. Error handling is a complex topic, which we
will return to inChapter8.
3.7.1 Exceptions
The term exception is used to refer to the type of error that one might want to handle with
a try..catch. An exception is an exception to the normal flow of control in the program.
The term is used in preference to “error” because in some cases, an exception might not be
considered to be an error at all. You can sometimes think of an exception as just another way
to organize a program.
Exceptions in Java are represented as objects of type Exception. Actual exceptions are de-
fined by subclasses of Exception. Different subclasses represent different types of exceptions.
We will look at only two types of exception in this section: NumberFormatException and Ille-
galArgumentException.
A NumberFormatException can occur when an attempt is made to convert a string
into a number.
Such conversions are done by the functions Integer.parseInt
CHAPTER 3. CONTROL
104
and Double.parseDouble.
(See Subsection 2.5.7.)
Consider the function call
Integer.parseInt(str) where str is a variable of type String. If the value of str is the
string "42", then the function call will correctly convert the string into the int 42. However,
if the value of str is, say, "fred", the function call will fail because "fred" is not a legal
string representation of an int value. In this case, an exception of type NumberFormatException
occurs. If nothing is done to handle the exception, the program will crash.
An IllegalArgumentException can occur when an illegal value is passed as a parameter to a
subroutine. For example, if a subroutine requires that a parameter be greater than or equal to
zero, an IllegalArgumentException might occur when anegative value is passedto the subroutine.
How to respond to the illegal value is up to the person who wrote the subroutine, so we
can’t simply say that every illegal parameter value will result in an IllegalArgumentException.
However, it is a common response.
One case where an IllegalArgumentException can occur is in the valueOf function of an
enumerated type. Recall fromSubsection2.3.3 that this function tries to convert a string into
one of the values of the enumerated type. If the string that is passed as a parameter to valueOf
is not the name of one of the enumerated type’s values, then an IllegalArgumentException occurs.
For example, given the enumerated type
enum Toss { HEADS, TAILS }
Toss.valueOf("HEADS") correctly returns thevalueToss.HEADS,whileToss.valueOf("FEET")
results in an IllegalArgumentException.
3.7.2 try..catch
When an exception occurs, we say that the exception is “thrown”. For example, we say that
Integer.parseInt(str) throws an exception of type NumberFormatException when the value
of str is illegal. When an exception is thrown, it is possible to “catch” the exception and
prevent it from crashing the program. This is done with a try..catch statement. In somewhat
simplified form, the syntax for a try..catch is:
try {
statements-1
}
catch ( exception-class-name variable-name ) {
statements-2
}
The exception-class-name could be NumberFormatException, IllegalArgumentException, or
some other exception class. When the computer executes this statement, it executes the state-
ments in the try part. If no error occurs during the execution of statements-1, then the
computer just skips over the catch part and proceeds with the rest of the program. However,
if an exception of type exception-class-name occurs during the execution of statements-1,
the computer immediately jumps to the catch part and executes statements-2, skipping any
remaining statements in statements-1. During the execution of statements-2, the variable-
name represents the exception object, so that you can, for example, print it out. At the end
of the catch part, the computer proceeds with the rest of the program; the exception has been
caught and handled and does not crash the program. Note that only one type of exception is
caught; if some other type of exception occurs during the execution of statements-1, it will
crash the program as usual.
CHAPTER 3. CONTROL
105
By the way, note that the braces, { and }, are part of the syntax of the try..catch
statement. They are required even if there is only one statement between the braces. This is
different from the other statements we have seen, where the braces around a single statement
are optional.
As an example, suppose that str is a variable of type String whose value might or might
not represent a legal real number. Then we could say:
try {
double x;
x = Double.parseDouble(str);
System.out.println( "The number is " + x );
}
catch ( NumberFormatException e ) {
System.out.println( "Not a legal number." );
}
If an error is thrown by the call to Double.parseDouble(str), then the output statement in
the try part is skipped, and the statement in the catch part is executed.
It’s not always a good idea to catch exceptions and continue with the program. Often that
can just lead to an even bigger mess later on, and it might be better just to let the exception
crash the program at the point where it occurs. However, sometimes it’s possible to recover
from an error. For example, suppose that we have the enumerated type
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
and we want the user to input a value belonging to this type. TextIO does not know about this
type, so we can only read the user’s response as a string. The function Day.valueOf can be
used to convert the user’s response to a value of type Day. This will throw an exception of type
IllegalArgumentException if the user’s response is not the name of one of the values of type Day,
but we can recover from the error easily enough by asking the user to enter another response.
Here is a code segment that does this. (Converting the user’s response to upper case will allow
responses such as “Monday” or “monday” in addition to “MONDAY”.)
Day weekday; // User’s response as a value of type Day.
while ( true ) {
String response; // User’s response as a String.
System.out.print("Please enter a day of the week: ");
response = TextIO.getln();
response = response.toUpperCase();
try {
weekday = Day.valueOf(response);
break;
}
catch ( IllegalArgumentException e ) {
System.out.println( response + " is not the name of a day of the week." );
}
}
// At this point, a legal value has definitely been assigned to weekday.
The break statement will be reached only if the user’s response is acceptable, and so the loop
will end only when a legal value has been assigned to weekday.
CHAPTER 3. CONTROL
106
3.7.3 Exceptions in TextIO
When TextIO reads a numeric value from the user, it makes sure that the user’s response is
legal, using a technique similar to the while loop and try..catch in the previous example.
However, TextIO can read data from other sources besides the user. (See Subsection2.4.5.)
When it is reading from a file, there is no reasonable way for TextIO to recover from an illegal
value in the input, so it responds by throwing an exception. To keep things simple, TextIO only
throws exceptions of type IllegalArgumentException, no matter what type of error it encounters.
For example, an exception will occur if an attempt is made to read from a file after all the data
in the file has already been read. In TextIO, the exceptionis of type IllegalArgumentException. If
youhave a better response to file errors than to let the program crash, you can use a try..catch
to catch exceptions of type IllegalArgumentException.
For example, suppose that a file contains nothing but real numbers, and we want a program
that will read the numbers and find their sum and their average. Since it is unknown how many
numbers are in the file, there is the question of when to stop reading. One approach is simply
to try to keep reading indefinitely. When the end of the file is reached, an exception occurs.
This exception is not really an error—it’s just a way of detecting the end of the data, so we
can catch the exception and finish up the program. We can read the data in a while (true)
loop and break out of the loop when an exception occurs. This is an example of the somewhat
unusual technique of using an exception as part of the expected flow of control in a program.
To read from the file, we need to know the file’s name. To make the program more general,
we can let the user enter the file name, instead of hard-coding a fixed file name in the program.
However, it is possible that the user will enter the name of a file that does not exist. When
we use TextIO.readfile to open a file that does not exist, an exception of type IllegalArgu-
mentException occurs. We can catch this exception and ask the user to enter a different file
name. Here is a complete program that uses all these ideas:
/**
* This program reads numbers from a file. It computes the sum and
* the average of the numbers that it reads. The file should contain
* nothing but numbers of type double; if this is not the case, the
* output will be the sum and average of however many numbers were
* successfully read from the file. The name of the file will be
* input by the user.
*/
public class ReadNumbersFromFile {
public static void main(String[] args) {
while (true) {
String fileName; // The name of the file, to be input by the user.
TextIO.put("Enter the name of the file: ");
fileName = TextIO.getln();
try {
TextIO.readFile( fileName ); // Try to open the file for input.
break; // If that succeeds, break out of the loop.
}
catch ( IllegalArgumentException e ) {
TextIO.putln("Can’t read from the file \"" + fileName + "\".");
TextIO.putln("Please try again.\n");
}
Documents you may be interested
Documents you may be interested