Hello MAZ,
acutally, you have done a great code, all you need to do is just modify this line:
|
Code:
|
if(STOP_CHAR.equals(in.next(STOP_CHAR))){ |
into
|
Code:
|
if(STOP_CHAR.equals(in.next())){ |
you world is in peace.
here is some test on your program:
|
Code:
|
Enter a floating-point variable. Type '~' when finished.
try1
1
in.hasNextDouble
2
in.hasNextDouble
3
in.hasNextDouble
4
in.hasNextDouble
~
try2
try2/if
Stop Char
Finally
ComputeSum
NumArraySize: 4
Sum: 10.0
ArrayList:[1.0, 2.0, 3.0, 4.0] |
and below is runnable code modified from yours:
|
Code:
|
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class ExceptionHandle {
private static ArrayList<Double> numArray = new ArrayList<Double>();
private static double sum = 0;//compute sum()
private static final String STOP_CHAR = "~";
private static final int EXIT_NO_VALUES = 0;
private static final int MAX_ATTEMPTS = 2;
private static int attempts = 0;
private static int an = 0; //Last array;
/**
* @param args
* Usage []
* @return
*/
public static void main(String[] args) {
// Get user input values
getNumbers();
// Compute the sum of the numbers
computeSum();
// Output the sum
printSum();
}
/**
*@param InputMismatchException
*
*
*/
private static void getNumbers() {
boolean done = false;
while (!done){
Scanner in = new Scanner(System.in);
try{
System.out.println("Enter a floating-point variable. Type '~' when finished. ");
System.out.println("try1");
while(in.hasNextDouble()){
System.out.println("in.hasNextDouble");
numArray.add(in.nextDouble());
an++;
}
try{
System.out.println("try2");
if(STOP_CHAR.equals(in.next())){
System.out.println("try2/if");
System.out.println("Stop Char");
done=true;
}
}
finally{
System.out.println("Finally");
in.close();
if(attempts>=MAX_ATTEMPTS){
System.out.println("Maximum attempts has been reached. Goodbye.");
System.exit(0);
}
}
}
catch(InputMismatchException exception){
System.out.println("Catch statement 1 activated");
System.out.println("Not a floating-point variable");
attempts++;
}
catch(IndexOutOfBoundsException exception){
System.out.println("Catch statement 2 activated");
attempts++;
}
}
}
private static void computeSum() {
System.out.println("ComputeSum");
System.out.println("NumArraySize: " +an);
if(numArray.isEmpty()){
System.out.println("Array Empty");
System.exit(EXIT_NO_VALUES);
}
for(int a1 = 0; a1 < numArray.size(); a1++){
sum = sum + numArray.get(a1);
}
}
private static void printSum() {
System.out.println("Sum: " +sum
+"\nArrayList:" +numArray);
}//End printSum
}//End Main |
i hope you can learn something from by comparation.
good luck