作业1:
错误部分:
第三行 float 值后面要加f;
第四行 long l2值后面加L;
第六行 byte b3 超出范围 byte范围-128~127;
第七行 j没有值 不能运算;
第十行 c2 不是char类型;
第十一行 byte b=b1-b2;==》byte b=(byte) b1-b2; 大转小要强转;
第十二行 char c = c1+c2-1; ==》 编译报错;
第十五行 double d = d1*i+j; j没有值;
作业2:
1.(操作符)有如下代码:
int a = 5;
int b = (a++) + (--a) +(++a);
问执行完之后,b 的结果是多少?
2. (基本类型的运算)一家商场在举行打折促销,所有商品都进行8 折优惠。一
位程序员把这个逻辑写成:
short price = ...; // 先计算出原价
short realPrice = price * 8 / 10; //再计算出打折之后的价格
问:这段代码是否正确?如果正确,假设price 为100 ,那计算之后的
realPrice值为多少?如果不正确,应该怎么改正?
把完整代码写出来
3.关于运算符的作业
随机给出一个五位数的彩票号码(正整数),程序输出该彩票号码中的数字及相关信息
1)在主类的main方法中声明一个用于存放彩票号码的int型变量ticketNumber,以及
用于存放彩票号码中个位、十位、百位、千位和万位上数字的byte型变量a1、a2、a3、
a4和a5。
2)?依次求出ticketNumber中个位、十位、百位、千位和万位上的数字,并将这些数字依
次赋值给变量a1、a2、a3、a4和a5。
3)输出表达式a1+a2+a34-a4+a5的值。
4)输出表达式a1*a2*a3*a4*a5的值。
答案:
第一题 执行结果 b = 5+5+6 ==>b=16;
第二题 不正确;正确代码如下:
public class Promotion {
public static void main(String[] args) {
double price =100;
double realPrice = price*8/10;
System.out.println(realPrice);
}
}
第三题 代码如下
import java.util.Random;
public class Lottery {
public static void main(String[] args) {
//先给出一个随机的5位数的彩票
int ticketNumber;
Random r=new Random();
ticketNumber=r.nextInt(99999-10000+1)+10000;//设置一个10000~99999的随机数字
System.out.println("随机的五位彩票数是:"+ticketNumber);
byte a5=(byte) ((ticketNumber/10000)%10);//第万位数字的值
byte a4=(byte) ((ticketNumber/1000)%10);//第千位数字的值
byte a3=(byte) ((ticketNumber/100)%10);//第百位数字的值
byte a2=(byte) ((ticketNumber/10)%10);//第十位数字的值
byte a1=(byte) (ticketNumber%10);//第个位数字的值
//输出彩票每一位的数字
System.out.println("彩票第个位数字"+a5);
System.out.println("彩票第十位数字"+a4);
System.out.println("彩票第百位数字"+a3);
System.out.println("彩票第千位数字"+a2);
System.out.println("彩票第万位数字"+a1);
int sum = a1+a2+a3+a4+a5;//彩票每位数字相加的和
System.out.println("彩票每位数字相加的和是:"+sum);
int product = a1*a2*a3*a4*a5;//彩票每位数字相乘的积
System.out.println("彩票每位数字相乘的积是:"+product);
}
}