有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

无无限循环的二进制代码和重复程序的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) 个答案

  1. # 1 楼答案

    以下功能可用于确保输入只有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) {
            ......
        }
    }
    

    我知道这似乎有点代码重。但是,我帮你了吗

  2. # 2 楼答案

    好的,现在您已经发布了一些代码,您需要阅读(并理解)您的需求

    从你的帖子来看,具体的要求是不要使用“无限循环”——我认为这意味着我可以使用条件循环

    因此,假设我了解您的要求,我会:

    1. 将现有代码包装在do/while循环中,因为您希望在执行结束时进行计算
    2. 写一些代码从键盘上读取
    3. 当键盘输入合适时(例如(!myvar.toLower().equals("y"))),退出上述循环

    请随意编写代码&;更新你的帖子,如果需要,我会更新这个答案。很抱歉,但在我看来,为你写代码既违背了SO的精神,也会对你的学习产生反作用

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