0
import java.util.*;

public class ConvertBinaryToInteger{
public static void main(String[] args){

    Scanner scan = new Scanner(System.in);
    final String EXIT="exit";


    System.out.println("This program will convert a binary into an integer.");
    System.out.println("Enter "+EXIT+" to exit program. Press enter to continue.");
    String word=scan.nextLine();

    while(!word.equals(EXIT)){

            while(!word.equals(EXIT)){
                boolean valid = false;
                while (!valid) {
                    System.out.println("Enter a binary number: ");
                    String binary = scan.next();
                    boolean isBinary = true;//first convert the 'binary' string into a char array and check for each char whether it is zero or one
                    char[] bits = binary.toCharArray();

                    for(int j=0; j<bits.length; j++){//read the inputs

                        if( (bits[j] != '0') && (bits[j] != '1') ){//check the inputs
                            isBinary = false;
                            break;
                        }
                    }
                    if(!isBinary){//not binary
                        System.out.println("This is not a binary number.");
                        System.out.println("Please enter a number that contains only 1's and 0's.");
                        System.out.println("Enter "+EXIT+" to exit program. Press enter to continue.");
                        word=scan.nextLine();
                    }
                    else{//binary
                        int integer = 0;
                        int temp;
                        int i = 0;
                        temp = Integer.parseInt(binary);

                        while (temp != 0){
                            int r = temp % 10;
                            double value = r * Math.pow(2, i);
                            i++;
                            integer = (int) (integer + value);
                            temp /= 10;
                        }
                        System.out.println("Integer of " + binary + " is " + integer+".");
                        System.out.println("Enter "+EXIT+" to exit program. Press enter to continue.");
                        word=scan.nextLine();
                    }   
                    System.out.println();
                    scan = new Scanner(System.in);
                }


            }



        }System.out.println("Program ended.");
    }

}

输入正确的二进制文件后无法退出。请帮我更改程序...如果您一开始没有退出,则无法结束程序..

4

2 回答 2

1
while (!valid) {

valid永远不会更新。如果他们想退出,设置validtrue更新word.

正如 所指出的@AnthonyGrist,完全删除while(!valid)循环也将解决此问题。

于 2013-10-10T15:05:41.797 回答
0

检查此代码 是否已启动并正在运行

PS:删除 !valid 条件也不会导致程序在进入退出时终止。我尝试过这个。

问题是您正在显示消息并立即写入 scan.nextline() ,它接受一个空白,这既不是 = 退出,也不是设置为 true 也有效,将始终初始化为 false,因为它进入word.equals(.. 条件。

于 2013-10-10T16:05:07.613 回答