打印字符串中读取的每个字符的错误

时间:2018-02-16 23:25:32

标签: java char

我不仅要查看如何操作,还要查看如何操作并为我不想要的角色生成错误消息。所以我的意思是我让用户输入输入,然后我想产生一个错误消息,如果用户输入的输入没有0或1.因此1121会产生错误,但是1101将是细

到目前为止我有这个,在shell中它会在每个字符后打印“错误”,即使它是正确的。

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n;
System.out.print("Please enter a sequence of 1's and 0's");
String binInput = scan.nextLine();
System.out.println(binaryToDecimal(binInput));

char c;     
for (int j = 0; j < binInput.length(); j++) {   
    c = binInput.charAt(j);
    if (c<0 || c>1){
    System.out.print("Error");}
}

public static int binaryToDecimal(String binString) {
    int size = binString.length();

    if (size == 1) {
        return Integer.parseInt(binString);
    } else {
        return binaryToDecimal(binString.substring(1, size)) + Integer.parseInt(binString.substring(0, 1)) * (int) Math.pow(2, size - 1);
    }

  }

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

像这样更改if语句

if (!(c == '0' || c == '1')){//...

这意味着 如果c不是字符0或chararcter 1

答案 1 :(得分:1)

c被定义为char,java允许chars使用关系运算符和等效运算符。 charAt(int)方法将特定的char拉出。在这种情况下,您应该将if语句更改为以下内容:

if(c != '0' && c != '1')

答案 2 :(得分:0)

O.K。让我们看看这段代码是否会给你一个错误。 (请确保您输入的内容不包含任何“空格”

    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int n;
    System.out.print("Please enter a sequence of 1's and 0's");
    String binInput = scan.nextLine();
//        System.out.println(binaryToDecimal(binInput));

    char c;
    for (int j = 0; j < binInput.length(); j++) {
        c = binInput.charAt(j);
        if (!(c == '0' || c == '1')) {
            System.out.print("Error");
        }
    }

我评论了一条陈述 - 它不相关......