验证二进制代码并重复程序而无需无限循环

时间:2016-03-31 19:46:53

标签: java

我被分配制作一个将二进制转换为十进制的程序。我完成了那部分没有任何问题,但我必须验证用户输入什么以确保它们放入二进制文件,否则它应该说"再试一次"我还必须使用字母" y / Y"重复该程序。继续,否则它存在而不使用无限循环。我不知道如何在没有无限循环的情况下做到这一点。谢谢



import java.util.Scanner;
class Quiz4 {
    public static void main(String args[]){
       Scanner input = new Scanner( System.in );
       System.out.print("Enter a binary number: ");
       String binaryString =input.nextLine();
       System.out.println("Output: "+Integer.parseInt(binaryString,2));
    }
}




2 个答案:

答案 0 :(得分:1)

好了,既然您已经发布了一些代码,那么您需要阅读(并理解)您的要求。

判断你的帖子,具体要求是不要使用"无限循环" - 我认为这意味着我可以使用条件循环。

所以,假设我理解你的要求,我会:

  1. 在do / while循环中包装现有代码,因为您希望在执行结束时进行评估。
  2. 写一些代码以便从键盘上读取。
  3. 当键盘输入合适时退出上述循环(例如(!myvar.toLower().equals("y")))。
  4. 随意编写代码&更新您的帖子,如果需要,我会更新此答案。道歉,但在我看来,为你编写代码既反对SO的精神,也反对你的研究适得其反。

    然而,另一种解决问题的方法是递归。如果您的老师真的要求您通过递归解决问题,我会认真考虑找另一位老师。

答案 1 :(得分:0)

以下函数可用于确保输入只有1和0。

private static boolean hasOnly1sAnd0s(String s) {
    for(int i = 0 ; i < s.length() ; i++) 
        // have character that is not 1 or 0
        if( !( s.charAt(i)== '1' || s.charAt(i)== '0' ) )
            return false;

    return true;
}

所以,说你有这样的东西接受用户输入,

public static void main(String args[]) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Enter a binary number: ");

    // in contains a potential binary string
    String in = scanner.nextLine();

    // first check to see if it is a binary string
    boolean isBinaryString = hasOnly1sAnd0s( in );

    // loop till user wants to keep trying again and enters invalid binary string
    while (!isBinaryString) {
        System.out.print("Try again? ");

        // if 'y' or 'Y', let user input number, else break out of loop
        char c = scanner.next(".").charAt(0);
        if (!(c == 'y' || c == 'Y'))
            break;

        // take input
        System.out.println("Enter a binary number: "); 
        in = scanner.next();

        // check if input is valid binary string
        isBinaryString = hasOnly1sAnd0s( in );
    }

    // the string `in` contains a valid binary string iff isBinaryString == true
    // otherwise, it is the case that user inputted `no` for "Try again"
    if (isBinaryString)
        System.out.println("Output: " + Integer.parseInt( in , 2));
}

编辑:(解释OP的文件结构)

import java.util.Scanner;
public class Hello {
    public static void main(String[] args) {
        ......
    }

    private static boolean hasOnly1sAnd0s(String s) {
        ......
    }
}

我知道这似乎有点代码重。但是,我是否设法帮助你了?