黑马程序员技术交流社区
标题:
为什么编译不通过?
[打印本页]
作者:
许飞翔
时间:
2012-3-11 13:45
标题:
为什么编译不通过?
class Test
{
public static void main(String[] args)
{
int i1 = 10;
int i2 = 10;
System.out.println("i1 + i2 = " + i1 + i2);
System.out.println("i1 - i2 = " + i1 - i2);
System.out.println("i1 * i2 = " + i1 * i2);
System.out.println("i1 / i2 = " + i1 / i2);
}
}
复制代码
作者:
編程浪子
时间:
2012-3-11 13:57
class Test
{
public static void main(String[] args)
{
int i1 = 10;
int i2 = 10;
System.out.println("i1 + i2 = " + (i1 + i2));
System.out.println("i1 - i2 = " + (i1 - i2));
System.out.println("i1 * i2 = " + (i1 * i2));
System.out.println("i1 / i2 = " + (i1 / i2));
}
}
你没加括号都变成字符串了,而—不能识别。所以要都要加上括号,
复制代码
作者:
冯旭君
时间:
2012-3-11 13:59
class Test {
public static void main(String[] args) {
int i1 = 10;
int i2 = 10;
System.out.println("i1 + i2 = " + (i1 + i2));
System.out.println("i1 - i2 = " + (i1 - i2));
System.out.println("i1 * i2 = " + i1 * i2);
System.out.println("i1 / i2 = " + i1 / i2);
}
}
这样编译就没有错误了,为+和-的运算符优先级是一样的,你写上"i1 - i2 = " + i1 - i2肯定是不行的,因为编译器会认为:让字符传+一个数字变成了一个字符串这没有问题,然后再减去一个数字,那肯定就错误了。还有你输出的第一句,"i1 + i2 = " + i1 + i2输出结果是 :i1 + i2 = 1010;而并非i1 + i2 = 20。
作者:
许前刚
时间:
2012-3-11 14:03
应该这样写吧!
System.out.println("i1 + i2 = " +( i1 + i2));
System.out.println("i1 - i2 = " +( i1 - i2));
System.out.println("i1 * i2 = " + (i1 * i2));
System.out.println("i1 / i2 = " + (i1 / i2));
如果像你那样写,如("i1 * i2 = " + i1 * i2)); 编译器运行到i1时就把i1 * i2 = " + i1的类型扩大到字符串了,因为这里的+号已经不是算术运算的加号了,而是字符串的连接,字符串是不能和i2相乘的。
作者:
王录林
时间:
2012-3-11 14:05
楼上正解!
作者:
baypm_jy
时间:
2012-3-11 14:23
class Test
{
public static void main(String[] args)
{
int i1 = 10;
int i2 = 10;
System.out.println("i1 + i2 = " + i1 + i2); +i1是变成字符串了,再加i2也没有问题,只是得不到你想要的结果,正解: System.out.println("i1 + i2 = " +( i1 + i2));
System.out.println("i1 - i2 = " + i1 - i2); +i1变成了字符串了,然后又减上i2,问题来了,字符串与数字相减肯定会有问题,正解:
System.out.println("i1 - i2 = " +( i1 - i2));
System.out.println("i1 * i2 = " + i1 * i2); 可以这样写,由于*优先级高些,所以正确
System.out.println("i1 / i2 = " + i1 / i2); 可以这样写,由于/优先级高些,所以正确
}
}
作者:
倪鹏博
时间:
2012-3-11 15:40
+会被识别成连接符,所以会报错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2