有一道简单的编程题
题目: 计算增值税。开始选择纳税人种类:一般纳税人和小规模纳税人,然后计算: 如果是一般纳税人 提示输入 本月销项和进项税额 如果是小规模纳税人 提示输入营业额
一般纳税人 增值税=(本月销项税额-进项税额)*0.17
如果是小规模纳税人 增值税=营业额*0.03
我写的是下面代码 一开始在49行没有加break语句,结果跳不出循环。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import java.util.Scanner;
2
3 public class Test {
4
5 /**
6 * @param args
7 */
8 public static void main(String[] args) {
9 Scanner sc = new Scanner(System.in);
10 double a;// 营业额或者销项额
11 double b;// 进项额
12 double c = 0; // 增值税额
13 int i = 0; // 选择项
14
15 do {
16 System.out.println("请输入您的纳税人类型:\n1 一般纳税人\n2 小规模纳税人");
17 sc=new Scanner(System.in);
18 if (sc.hasNextInt()) {
19 i = sc.nextInt();
20 }
21 } while (i != 1 && i != 2);
22 if(i==2){
23 while(true){
24 System.out.println("请输入销售成本:");
25 sc=new Scanner(System.in);
26 if(sc.hasNextDouble()){
27 if((a=sc.nextDouble())>0){
28 c=a*0.03;
29 break;
30 }
31 }
32 }
33 }else{
34 while(true){
35 System.out.println("请输入本月销项:");
36 sc=new Scanner(System.in);
37 if(sc.hasNextDouble()){
38 if((a=sc.nextDouble())>0){
39 while(true){
40 sc=new Scanner(System.in);
41 System.out.println("请输入本月进项:");
42 if(sc.hasNextDouble()){
43 if((b=sc.nextDouble())>0){
44 c=(a-b)*0.17;
45 break;
46 }
47 }
48 }
49 break;
50 }
51 }
52 }
53 }
54 if (c >= 0) {
55 System.out.printf("您应缴纳税额为%.2f", c);
56 } else {
57 System.out.printf("您应缴纳税额为0");
58 }
59 }
60 }