1. (标识符命名)下面几个变量中,那些是对的?那些是错的?错的请说明理由
A. ILoveJava
B . $20
C . learn@java
D . antony. lee
E. Hello_World
F . 2 tigers
2. (Java 程序的编译与运行)假设有如下程序:
package com. corejava. chp1 ;
public class HelloWorld {
public static void main ( String args[ ] ) {
System . out. println ( "Hello World" ) ;
}
}
问:
1 )假设这个代码存在hello. java 文件中,那这个程序能够编译通过?为什么?
如果编译不通过,应该如何改进?
2 )假设这个. java 文件放在C : \javafile\目录下,CLASSPATH= .
java - cp . com. corejava. chp1. Hello( cp代表目录)
可以使用javac - d 路径 java文件(. java) 可以快速建立包
3. (if 语句)读入一个整数,判断其是奇数还是偶数
Scanner sC = new Scanner ( System . in) ;
System . out. println ( "请输这一个整数) ;
int a = sc. nextInt ( ) ;
String result = a% 2 == 0 ? "偶数" : "奇数"
4. (操作符)有如下代码:
int a = 5 ;
int b = ( a++ ) + ( -- a) + ( ++ a) ;
问执行完之后,b的结果是多少?
16
5. (基本类型的运算)
一家商场在举行打折促销,所有商品都进行8 折优惠。一位程序员把这个逻辑写成:
short price = . . . ;
short realPrice = price * 8 / 10 ;
问:这段代码是否正确?如果正确,假设price 为100 ,那计算之后的realPric值为多少?如果不正确,应该怎么改正?
答:不正确,因为8 和10 是整型数据
double price = a;
double realPrice = ( a) * ( 8 / 10 ) ;
System . out. println ( realPrice) ;
6. (操作符)请说明>> 与>>> 之间的区别
两者都是Java 中的位运算符:
“ >> ” 表示右移,如果该数为正,则高位补0 ,若为负数,则高位补1 ;
“ >>> ”表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0 ,而若该数为负数,则右移后高位同样补0 。
表达式如下:
result = exp1 >> exp2;
result = exp2 >>> exp2;
表示把数exp1向右移动exp2位。
例如:
res = 20 >> 2 ;
20 的二进制为 0001 0100 ,右移2 位后为 0000 0101 ,则结果就为 res = 5 ;
res = - 20 >> 2 ;
- 20 的二进制为其正数的补码加1 ,即 1110 1011 ,右移2 位后为 1111 1100 ,结果为 res = - 6 ;
而对于>>> 符号而言:
res = 20 >>> 2 ; 的结果与 >> 相同;
res = - 20 >> 2 ;
- 20 的二进制为 1110 1011 ,右移2 位,此时高位补0 ,即 0011 1010 ,结果为 res = 58 ;
<< 是与>> 对应的左移运算符,原理同上,表示将exp1向左移动exp2位,在低位补0 。其实,向左移动n位,就相当于乘以2 ^ n。同理,向右移动n位,就相当于除以2 ^ n。
但要注意的是左移没有<< < 运算符。
7. (操作符)有如下代码:
a= ( a> b) ? a: b;
请问这段代码完成了什么功能。
8. (if 语句)
读入一个整数,表示一个人的年龄。如果小于6 岁,则输出“儿童”,6 岁到13 岁,输出“少儿”;14 岁到18 岁,输出“青少年”;18 岁到35 岁,输出“青年”;35 岁到50 岁,输出“中年”;50 岁以上输出“中老年”。
import java. util. Scanner ;
class AgeJudgment {
public static void main ( String [ ] args) {
Scanner sc= new Scanner ( System . in) ;
System . out. println ( "请输入成绩" ) ;
int num= sc. nextInt ( ) ;
if ( num< 6 && num> 0 )
System . out. println ( "儿童" ) ;
else if ( num>= 6 && num<= 13 )
System . out. println ( "少儿" ) ;
else if ( num>= 14 && num<= 18 )
System . out. println ( "青少年" ) ;
else if ( num>= 19 && num<= 35 )
System . out. println ( "青年" ) ;
else if ( num>= 36 && num<= 50 )
System . out. println ( "中年" ) ;
else if ( num>= 51 )
System . out. println ( "中老年" ) ;
else
System . out. println ( "你的输入有误" ) ;
}
}
9. (switch 语句)读入一个整数,如果是1 ~ 5 之间,则分别输出5 个福娃的名字,否则输出“北京欢迎你”。
import java. util. Scanner ;
class SwitchFuwa {
public static void main ( String [ ] args) {
Scanner sc = new Scanner ( System . in) ;
System . out. println ( "请随机输入一个整数:" ) ;
int n = sc. nextInt ( ) ;
switch ( n) {
case 1 :
System . out. println ( "贝贝" ) ;
break ;
case 2 :
System . out. println ( "晶晶" ) ;
break ;
case 3 :
System . out. println ( "欢欢" ) ;
break ;
case 4 :
System . out. println ( "迎迎" ) ;
break ;
case 5 :
System . out. println ( "妮妮" ) ;
break ;
default :
System . out. println ( "北京欢迎你" ) ;
}
}
}
10. (if 语句,赋值操作)
读入三个整数,输出这三个整数中最大的一个
import java. util. Scanner ;
public class t3 {
public static void main ( String [ ] args) {
Scanner sc= new Scanner ( System . in) ;
int a= sc. nextInt ( ) ;
int b= sc. nextInt ( ) ;
int c= sc. nextInt ( ) ;
int max= ( a> b? ( a> c? a: c) : ( b> c? b: c) ) ;
System . out. println ( max) ;
}
}
11. (if 语句)
读入一个表示年份的整数,判断这一年是否是闰年。如何判断一个年份是否是闰年:
1. 如果这个年份能够被4 整除,且不能被100 整除,则这一年是闰年。例
如,1996 年是闰年,而相应的,1993 年就不是闰年。
2. 如果这个年份能够被100 整除,则这个数必须要能被400 整除,才是闰
年。例如,2000 年是闰年,1900 年不是闰年。
import java. util. Scanner ;
public class runnian {
public static void main ( String [ ] args) {
System . out. println ( "请随机输入一个整数:" ) ;
Scanner sc= new Scanner ( System . in) ;
int y= sc. nextInt ( ) ;
if ( ( y% 400 == 0 ) || ( y% 4 == 0 && y% 100 != 0 ) )
System . out. println ( "是闰年" ) ;
else
{
System . out. println ( "不是闰年" ) ;
}
}
}
12. (switch 语句)* 完成一个简单的计算器程序。程序要求如下:
1. 读入两个整数
2. 提示用户选择对这两个整数的操作,即输出
1 : +
2 : -
3 : *
4 : /
请输入您的选择:
读入用户的选择,输出运算结果。
import java. util. Scanner ;
public class t5 {
public static void main ( String [ ] args) {
Scanner sc= new Scanner ( System . in) ;
int a= sc. nextInt ( ) ;
int b= sc. nextInt ( ) ;
System . out. println ( "1 : +" ) ;
System . out. println ( "2 : -" ) ;
System . out. println ( "3 : *" ) ;
System . out. println ( "4 : /" ) ;
System . out. println ( "请输入您的选择:(选择数字)" ) ;
int c= sc. nextInt ( ) ;
switch ( c) {
case 1 :
System . out. println ( a+ b) ;
break ;
case 2 :
System . out. println ( a- b) ;
break ;
case 3 :
System . out. println ( a* b) ;
break ;
case 4 :
System . out. println ( a/ b) ;
break ;
default :
System . out. println ( "请输入1-4" ) ;
break ;
}
}
}
13. (if 语句)
托运计费问题:
当货物重量小于 20 公斤的时候,收费 5 元,
大于 20 公斤小于 100 公斤的时候超出 20 公斤的部分按每 0.2 元每公斤计费,
如果超出 100 公斤的时候,超出的部分按照每公斤 0.15 元计算。
读入货物的重量,输出计算之后货物的运费。
import java. util. Scanner ;
public class IfYunFei {
public static void main ( String [ ] args) {
Scanner sc= new Scanner ( System . in) ;
int num= sc. nextInt ( ) ;
if ( num< 20 )
System . out. println ( "一共收费5元" ) ;
else if ( num>= 20 && num< 100 )
System . out. println ( "一共收费" + ( ( num- 20 ) * 0.2 + 5 ) + "元" ) ;
else if ( num>= 100 )
System . out. println ( "一共收费" + ( ( num- 20 ) * 0.15 + 5 ) + "元" ) ;
else
System . out. println ( "你的输入有误" ) ;
}
}
14. (if 语句)
中国的个税计算方法:
应税所得为税前收入扣除2000 元(起征点),然后超出部分,按照以下税率收税:
500 5 %
500 - 2000 10 %
2000 - 5000 15 %
5000 - 20000 20 %
20000 - 40000 25 %
40000 - 60000 30 %
60000 - 80000 35 %
80000 - 100000 40 %
100000 - ? 45 %
例:若月收入15000 ,则应税所得为15000 - 2000 = 13000 ;总的个人所得税为
(13000 - 5000 )* 20 % + (5000 - 2000 )* 15 % + (2000 - 500 )* 10 % + 500 * 5 %
= 2225
要求:读入一个整数,表示税前收入,输出应当缴纳的个人所得税和税后实际收入。
package com. yirose. java8. string ;
import java. util. Iterator ;
import java. util. LinkedHashMap ;
import java. util. Map ;
import java. util. Scanner ;
public class revenueDemo {
public static void main ( String [ ] args) {
Map < Integer , Double > map = new LinkedHashMap < Integer , Double > ( ) ;
map. put ( 100000 , 0.45 ) ;
map. put ( 80000 , 0.40 ) ;
map. put ( 60000 , 0.35 ) ;
map. put ( 40000 , 0.30 ) ;
map. put ( 20000 , 0.25 ) ;
map. put ( 5000 , 0.20 ) ;
map. put ( 2000 , 0.15 ) ;
map. put ( 500 , 0.10 ) ;
map. put ( 0 , 0.05 ) ;
Scanner sc = new Scanner ( System . in) ;
System . out. println ( "请输入你的税前薪水:" ) ;
int pre_tax = sc. nextInt ( ) ;
int salary = pre_tax - 2000 ;
double revenue = 0 ;
Iterator iter = map. keySet ( ) . iterator ( ) ;
while ( iter. hasNext ( ) ) {
Integer key = ( Integer ) iter. next ( ) ;
double val = map. get ( key) ;
if ( salary > key) {
salary = salary - key;
double revenue0 = salary * val;
revenue = revenue + revenue0;
salary = key;
}
}
System . out. println ( "税前薪水:" + pre_tax) ;
System . out. println ( "实际薪水:" + ( pre_tax - revenue) ) ;
System . out. println ( "交税:" + revenue) ;
}
}
15. (if 语句,操作符)
读入一个三位数,计算其各位数字之和。例如:123 各位数字之和为6
import java. util. Scanner ;
public class t7 {
public static void main ( String [ ] args) {
Scanner sc= new Scanner ( System . in) ;
int num= sc. nextInt ( ) ;
int a= num% 10 ;
int b= num/ 10 % 10 ;
int c= num/ 100 ;
System . out. println ( a+ b+ c) ;
}
}
16. (if 语句)
读入三个整数,把这三个整数按照由大到小的顺序输出。
import java. util. Scanner ;
public class IfSanGeShuPaiXuShuChu {
public static void main ( String [ ] args) {
System . out. println ( "请随机输入三个整数,数字间空格隔开,系统将从大到小排序:" ) ;
Scanner s = new Scanner ( System . in) ;
System . out. println ( "Enter" ) ;
int a = s. nextInt ( ) ;
int b = s. nextInt ( ) ;
int c = s. nextInt ( ) ;
if ( a < b) {
int t = a;
a = b;
b = t;
}
if ( a < c) {
int t = a;
a = c;
c = t;
}
if ( b < c) {
int t = b;
b = c;
c = t;
}
System . out. println ( "" ) ;
System . out. println ( c + " " + b + " " + a) ;
}
}