Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-整数和二进制文件_Java_Binary_Syntax Error_Decimal - Fatal编程技术网

Java-整数和二进制文件

Java-整数和二进制文件,java,binary,syntax-error,decimal,Java,Binary,Syntax Error,Decimal,尝试创建一个程序,在其中输入二进制数,然后以二进制形式再次得到这两个数的和。为什么代码不起作用 import java.util.Scanner; class ABC{ public static void main(String[] args){ Scanner toy = new Scanner(System.in); int x = toy.nextInt(); int y = toy.nextInt();

尝试创建一个程序,在其中输入二进制数,然后以二进制形式再次得到这两个数的和。为什么代码不起作用

import java.util.Scanner;
   class ABC{
      public static void main(String[] args){
        Scanner toy = new Scanner(System.in);
        int x = toy.nextInt();
        int y = toy.nextInt();
        x = 0bx; y=0by; ------------> ERROR SHOWS UP
        int z = x + y;
        System.out.println(Integer.toBinaryString(z));
        }
     }
错误消息如下:

binary numbers must contain at least one binary digit 
';' expected
理想的例子:

x = 101 (integer) --> x = 5 (binary meaning of 101)
y = 10  (integer) --> y = 2 (binary meaning of 10)
z = x + y = 5 + 2 = 7
return binary form of 7 (111)

如果希望将输入的数字解析为二进制,则应将其读取为
String
s,并以基数2解析为
int

int x = Integer.parseInt(toy.next(),2);
int y = Integer.parseInt(toy.next(),2);    
int z = x + y;
System.out.println(Integer.toBinaryString(z));
至于你的错误:

x = 0bx; y=0by;

不是有效的语法。
0b
前缀允许您输入将被视为二进制文字的数字文字(例如
x=0b1001;
),但不能将其与变量组合

您编写了
0bx
,如果成功的话,这是一个很好的编程技巧。事实并非如此,正如你自己所经历的那样

要了解原因,您需要知道您编写的代码首先作为一个整体进行解释,然后由编译器翻译成机器代码中的程序。原则上,编译器可以通过
0bx
表达式了解您想要说什么。只是Java编程语言不允许这个表达式

它的意思类似于:

二进制文本由
0b
编写,后跟0和1,至少一个,并且尽可能多

“文字”一词的意思是与字母相关的东西,“如书面形式”。因此,您不能使用编程语言的这一部分

但还有另一部分。方法
Integer.parseInt
有两种变体:
Integer.parseInt(“12345”)
将数字的十进制表示形式转换为该数字。变量
Integer.parseInt(“101110101101”,2)
将一个数字的二进制表示形式解析为该数字


如果有一种方法
toy.nextInt(2)
,您可以使用它。否则,您必须使用
Integer.parseInt(toy.next(),2)

典型的编程语言不允许您在语法方面如此有创意,它通常会完全模棱两可