我被分配制作一个将二进制转换为十进制的程序。我完成了那部分没有任何问题,但我必须验证用户输入什么以确保它们放入二进制文件,否则它应该说"再试一次"我还必须使用字母" 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));
}
}

答案 0 :(得分:1)
好了,既然您已经发布了一些代码,那么您需要阅读(并理解)您的要求。
判断你的帖子,具体要求是不要使用"无限循环" - 我认为这意味着我可以使用条件循环。
所以,假设我理解你的要求,我会:
(!myvar.toLower().equals("y"))
)。随意编写代码&更新您的帖子,如果需要,我会更新此答案。道歉,但在我看来,为你编写代码既反对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) {
......
}
}
我知道这似乎有点代码重。但是,我是否设法帮助你了?