我正在为我的gui数字转换器创建一个程序。我希望我的程序向用户询问二进制字符串,如果他没有输入二进制数字,程序将显示错误消息并要求他再次输入。问题是我可以对字母表添加限制,但是当涉及到数字时,它会失败或者它会一直显示错误消息。
import java.util.*;
public class test {
Scanner key = new Scanner(System.in);
String in;
int b;
public test(){
do{
System.out.println("Enter the binary string of 5 numbers");
in = key.nextLine();
int i,j;
char ch;
for (i=0 ; i<=5 ; i++){
b = 0;
ch = in.charAt(i);
j = ch;
if (Character.isDigit(ch) && ch<=0 && ch>=1)
b = 1;
else
System.out.println("Please enter a binary number (1 , 0)");
break;
//b = 1;
}
}while(b != 1);
int c;
c = Integer.parseInt(in);
System.out.println("your number is: " + c );
}
public static void main (String args[]){
test obj = new test();
}
}
答案 0 :(得分:7)
ch<=0 && ch>=1
没有按照您的想法行事。 “0”和“1”的字符代码分别为48和49,因此您应该检查这些代码。此外,您的>=
比较器是向后的,但这并不是编写此代码的最简单方法。由于您只是在比较这两个值,Character.isDigit(ch)
是多余的。
尝试以下方法之一:
ch == 48 || ch == 49
ch == '0' || ch == '1'
答案 1 :(得分:2)
Scanner
有一个使用基数的重载nextInt
方法
int binaryNumber = scanner.nextInt(2);
答案 2 :(得分:0)
1)此处的第一个逻辑错误for (i=0 ; i<=5 ; i++)
将i<=5
替换为i<5
2)更改if else条件,如下所示
if (Character.isDigit(ch) && (ch == '0' || ch == '1'))
{
b = 1;
}
else
{
System.out.println("Please enter a binary number (1 , 0)");
break;
}