Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Help with having the program run again

$
0
0
So what this program does is calculate tax by taking in a filing status and income, now I achieved the goal of my assignment but I want to go beyond cause what other way is there to learn. So what I did was try to have user input weather they would like to run the program again by entering y or n then making it uppercase the going to an if statement Y to run ,N to quit but when my program gets to the part to take in a string it crashes and says

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at computingTax.run(computingTax.java:180)
at computingTax.main(computingTax.java:195)

what am I doing wrong? The error starts in the run method towards the end there is a comment "//error starts here"

import java.util.Scanner;


public class computingTax {
public int status;
public double tax;
public double income;

//All the tax rates are laid out here depending on filing status
//All the math was done to add the max tax from the previous brackets
//if the income went into the next tax bracket.
public double taxRate(int status,double income){
	
	if(status==0){
		
		if(income>=0 && income<=8350){
			tax = income *.10;
		}
		if(income>=8351 && income<=33950){
			income = income-8350;
			tax = income *.15;
			tax= tax+835;
		}
		if(income>=33951 && income<=82250){
			income= income -33950;
			tax = income *.25;
			tax = tax + 4674.85;
		}
		if(income>=82251 && income<=171550){
			income= income-82250;
			tax = income *.28;
			tax = tax +16749.6;
		}
		if(income>=171551 && income<=372950){
			income= income -171550;
			tax = income *.33;
			tax = tax + 39074.35;
		}
		if(income>= 372951){
			income = income - 372950;
			tax = income *.35;
			tax = tax + 105536.02;
		}
	}
	
	if(status==1){
		if(income>=0 && income<=16700){
			tax = income *.10;
		}
		if(income>=16701 && income<=67900){
			income= income-16700;
			tax = income *.15;
			tax = tax + 1670;
		}
		if(income>=67901 && income<=137050){
			income=income-67900;
			tax = income *.25;
			tax = tax+9349.85;
		}
		if(income>=137051 && income<=208850){
			income=income-137050;
			tax = income *.28;
			tax = tax + 26637.1;
		}
		if(income>=208851 && income<=372950){
			income=income-208850;
			tax = income *.33;
			tax= tax +46740.82;
		}
		if(income>=372951){
			income=income-372950;
			tax = income *.35;
			tax = tax +100893.49;
		}
	}
	
	if(status==2){
		if(income>=0 && income<=8350){
			tax = income *.10;
			
		}
		if(income>=8351 && income<=33950){
			income= income-8350;
			tax = income *.15;
			tax = tax + 835;
		}
		if(income>=33951 && income<=68525){
			income=income-33950;
			tax = income *.25;
			tax = tax +4674.85;
		}
		if(income>=68525 && income<=104425){
			income=income -68525;
			tax = income *.28;
			tax = tax +13318.35;
		}
		if(income>=104426 && income<=186475){
			income=income -104425;
			tax = income *.33;
			tax = tax + 23370.35;
		}
		if(income>= 186476){
			income=income -186475;
			tax = income *.35;
			tax = tax + 50446.52;
		}
	}
	
	if(status==3){
		if(income>=0 && income<=11950){
			tax = income *.10;
		}
		if(income>=11951 && income<=45500){
			income= income-11950;
			tax = income *.15;
			tax = tax +1195;
		}
		if(income>=45501 && income<=117450){
			income=income-45500;
			tax = income *.25;
			tax = tax + 6227.35;
		}
		if(income>=117451 && income<=190200){
			income=income-117450;
			tax = income *.28;
			tax = tax + 24214.6;
		}
		if(income>=190201 && income<=372950){
			income =income-190200;
			tax = income *.33;
			tax = tax + 44584.32;
		}
		if(income>=372950){
			income =income-372950;
			tax = income *.35;
			tax = tax + 104891.49;
		}
	}
	return tax;
}
public void run(){
	int a=0;
	double b=0;
	double taxrate;
	String S1;
	char choice;
	Scanner input = new Scanner (System.in);
	
	try {
		do{
			System.out.println("Enter your filing status:");
			a = input.nextInt();//ask for the filing status
			if (a<0 || a>3){
			System.out.print("Please enter a number 0-3\n");
			Thread.sleep(1000);
			}//if a invalid filing status is entered a message will print 
		}while(a<0 || a>3);
	} catch (InterruptedException e) {
		e.printStackTrace();
	}// Here we are stuck in a loop till a valid entry is entered
	
	
	try {
		do{
			System.out.println("Enter the taxable income:");
			b = input.nextInt();// ask for the income
			if(b<0){
			System.out.println("Please enter a positive income or enter 0");
			Thread.sleep(1000);
			}//if a invalid income is entered a message will print 
		}while(b<0);
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
	computingTax test = new computingTax();
	taxrate =test.taxRate(a,B)/>/>/>;// put the numbers in and have the math done to get the tax
	System.out.format("Your tax is %.2f\n", taxrate);//print out the tax rate.
	System.out.print("would you like to run again? (Y/N):\n");
	S1= input.nextLine();//error starts here
	choice = S1.charAt(0);
	Character.toUpperCase(choice);
	if(choice=='Y'){
		test.run();
	}
	if(choice=='N'){
		System.exit(0);
	}
	input.close();
	
}
public static void main(String[] arg){
	
	Scanner input = new Scanner (System.in);
	computingTax test = new computingTax();
		test.run();
		
input.close();
}
}



Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>