为什么我的java程序会无限循环

import java.util.*;import java.io.*;
public class Lilv {
public static void main(String[] args) throws IOException
{
System.out.println("请输入您的银行类型");
String line ;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
line = reader.readLine();
char a = line.charAt(0);
System.out.println("看样子你的银行是"+a);

System.out.println("请输入您的存款数目");
Scanner sc = new Scanner(System.in);
float shumu= sc.nextFloat();

while(true){

switch(a){
case 'A':System.out.println("您的利息是"+shumu*1.5/100);break;
case 'B':System.out.println("您的利息是"+shumu*2/100);break;
case 'C':System.out.println("您的利息是"+shumu*3/100);break;
case 'D':System.out.println("您的利息是"+shumu*5/100);break;
default:System.out.println("你输入的不正确,只能输入大写的A,B,C,D");
}

}
}
}

经测试在循环体里的东西会无限循环

while(true)当然无限循环啊……
小小改了下,你是不是需要这样的

import java.util.Scanner;
public class Lilv {
public static void main(String[] args) {
while(true){
System.out.println("请输入您的银行类型");
Scanner scanner=new Scanner(System.in);
String line = scanner.next();
char a = line.charAt(0);
System.out.println("看样子你的银行是"+a);

System.out.println("请输入您的存款数目");
float num= scanner.nextFloat();

switch(a){
case 'A':System.out.println("您的利息是"+num*1.5/100);break;
case 'B':System.out.println("您的利息是"+num*2/100);break;
case 'C':System.out.println("您的利息是"+num*3/100);break;
case 'D':System.out.println("您的利息是"+num*5/100);break;
default:System.out.println("你输入的不正确,只能输入大写的A,B,C,D");
}

}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-02
while(true)

你这样当然会无限循环
你想这样吧?
public static void main(String[] args) throws IOException {

while (true) {
System.out.println("请输入您的银行类型");
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
line = reader.readLine();
char a = line.charAt(0);
System.out.println("看样子你的银行是" + a);

System.out.println("请输入您的存款数目");
Scanner sc = new Scanner(System.in);
float shumu = sc.nextFloat();

switch (a) {
case 'A':
System.out.println("您的利息是" + shumu * 1.5 / 100);
break;
case 'B':
System.out.println("您的利息是" + shumu * 2 / 100);
break;
case 'C':
System.out.println("您的利息是" + shumu * 3 / 100);
break;
case 'D':
System.out.println("您的利息是" + shumu * 5 / 100);
break;
default:
System.out.println("你输入的不正确,只能输入大写的A,B,C,D");
}
}
}本回答被网友采纳
第2个回答  2013-11-02
import java.util.*;import java.io.*;
public class Lilv {
 public static void main(String[] args) throws IOException
 {
  System.out.println("请输入您的银行类型");
  String line ;
  BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  line = reader.readLine();
  char a = line.charAt(0);
  System.out.println("看样子你的银行是"+a);
  
  System.out.println("请输入您的存款数目");
  Scanner sc = new Scanner(System.in);
  float shumu= sc.nextFloat();

while(true){
  
   switch(a){
   case 'A':System.out.println("您的利息是"+shumu*1.5/100);break;
   case 'B':System.out.println("您的利息是"+shumu*2/100);break;
   case 'C':System.out.println("您的利息是"+shumu*3/100);break;
   case 'D':System.out.println("您的利息是"+shumu*5/100);break;
   default:System.out.println("你输入的不正确,只能输入大写的A,B,C,D");
               }
   break;
           }
       }
}

这样就可以了,break只能跳出当前代码块,这里跳不出while循环的

第3个回答  2013-11-02
break只是跳出了switch语句块,没有跳出while循环,这个时候a值还是存在的,所以会一直执行下去。
第4个回答  2013-11-02
你用的就是无限循环啊,while(true)。所以这里要改,你可以把那个true换成一个控制变量
相似回答