java try and catch..infinite循环

Sar*_*hah 0 java exception-handling arraylist

try和他有问题catch.我的程序是插入三个不同的字符串名称,地址和电话号码然后我使用toString方法将这三个转换为单个字符串.

每当我写错选项(String或其他数据类型)时,我都会遇到异常处理问题,然后捕获无限次.

import java.util.ArrayList;
import java.util.Scanner;

public class mainClass {

  public static void main(String[] args) {
    Scanner input= new Scanner(System.in);
    ArrayList<String> arraylist= new ArrayList<String>();
    CreateFormat FormatObject = new CreateFormat();

    int choice;
    String phoneNumber;
    String name,address;
    String format="Empty";
    int x=1;
    int flag=0;
    do
    {
    try

    {   
    System.out.println("Enter your choice");
    System.out.printf("1:Enter new data\n2:Display data");
    choice=input.nextInt();
    switch (choice)
    {
    case 1:
    {
        System.out.println("Enter name  ");
        name=input.next();
        System.out.println("Enter phone number");
        phoneNumber=input.next();
        System.out.println("Enter address");
        address=input.next();
        format=FormatObject.toString(phoneNumber, name, address);
        arraylist.add(format);
        flag++;


    }
        break;
    case 2:
    {
        System.out.println("Name   Phone number   Address");
        System.out.println();
        for(int i=0;i<flag;i++)
        {   
        System.out.println(arraylist.get(i));

        }
    }
        break;
    }

}

 catch(Exception InputMismatchException){
System.out.println("Enter right choice");`
   }while(x==1);
}
}


//The format class ...//returns format for string
Run Code Online (Sandbox Code Playgroud)

Stu*_*ske 6

try和你catch的循环没关系,也与你的问题无关.

while(x==1)
Run Code Online (Sandbox Code Playgroud)

是你测试的,但你永远不会改变它的值x,因此它将始终保持为1,因此上面的检查将始终返回true.