Java数据类型和方法练习题
1.下面属于java基本类型的有(BC )
A.String
B.byte
C.char
D.Array
2.在Java中表示换行符的转义字符是(A)
A.\n
B.\f
C.‘n’
D.\dd
3.下面关于变量及其范围的陈述哪些是不正确的(B )
A.实例变量是类的成员变量
B.实例变量用关键字static声明
C.在方法中定义的局部变量在该方法被执行时创建
D.局部变量在使用前必须被初始化
4.经过强制类型转换以后,变量a,b的值分别为多少(B )
short a =128;
byte b =(byte) a;
A.128 127
B.128 - 128
C.128 128
D.编译错误
5.如下Java语句 double x=2.0; int y=4; x/=++y; 执行后,x的值是(C )
A.0.5
B.2.5
C.0.4
D.2.0
6.下列说法正确的是(AB )
A.布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。
B.byte a = 130; float b = 3.5; 这两行代码会发生编译错误
C.int a = 3; byte b = a; 这句话可以正常通过编译,且运行不会发生错误。
7.下列哪个不是赋值符号©
A.+=
B.<<=
C.<<<=
D.>>>=
8.下列说法不正确的是(D )
A.Java当中的注释有,单行注释,多行注释(块注释),文档注释。
B.注释可以提高代码可读性 ,方便后期代码维护 ,方便程序员间的交流沟通 ,生成帮助文档 。
C.注释不能长篇大论,也不要太过于简单,适度就好。
D.注释并不需要,只要变量等命名合理就行。
9.下列语句哪一个正确 ( C)
A.Java程序经编译后会产生machine code
B.Java程序经编译后会产生byte code
C.Java程序编译使用命令javac 运行使用 java 命令
D.以上都不正确
10.基本数据类型均可任意互相转换(B )
A.对
B.错
11.如果要打印一个字符串,需要使其输出结果为:“hello”,则以下哪种方式可以正确输出:( A)
A.System.out.println("\“hello\”");
B.System.out.println("\“hello\”");
C.System.out.println("/“hello/”");
12.switch(){}结构中,括号中可使用的数据类型不能是( AD)。
A.long
B.int
C.short
D.float
13.数字9 出现的次数
编写程序数一下 1到 100 的所有整数中出现多少个数字9:
public class Test {
public static void main(String[] args) {
int num=0;
int count=0;//计数器
for ( num = 1; num <=100 ; num++) {
if(num%10 == 9){
count++;
}
if(num/10 == 9){
count++;
}
}
System.out.println(count);
}
}
14.输出闰年
输出 1000 - 2000 之间所有的闰年:
public class leapYear {
public static void main(String[] args) {
int year;
for(year=1000;year<=2000;year++){
if((year%400 == 0)||(year%4 == 0 && year%100 != 0)){
System.out.println(year);
}
}
}
}
15.打印素数
打印 1 - 100 之间所有的素数:
public class Test {
public static void main(String[] args) {
for (int i = 1; i <=100; i++) {
boolean isprime=true;
if(i==1){
isprime=false;
}
for (int j = 2; j <i ; j++) {
if(i%j == 0){
isprime=false;
break;
}else{
isprime=true;
}
}
if(isprime==true){
System.out.println(i+" ");
}
}
}
}
16.判定素数
给定一个数字,判定一个数字是否是素数:
import java.util.Scanner;
public class Test {public static void main(String[] args) {
result();
}
public static boolean judge(int x){
if(x==1 || x==0){
return false;
}
for (int i = 2; i <=Math.sqrt(x) ; i++){
if(x%i == 0){
return false;
}
}
return true;
}
public static void result() {
Scanner s = new Scanner(System.in);
System.out.print("请输入一个你想判断的数:");
int n = s.nextInt();
if (n > 0) {
if (judge(n)) {
System.out.println("是素数");
} else {
System.out.println("不是素数");
}
}else{
System.out.println("请输入一个大于0的数");
result();
}
}
}
17.年龄打印
根据输入的年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上):
import java.util.Scanner;
public class Test{public static void main(String[] args) {
while(true){
System.out.println("请输入要判断的年龄");
Scanner in=new Scanner(System.in);
int age=in.nextInt();
if(age<0){
System.out.println("输入有误,重新输入");
continue;
}
if(age>=19 && age<=28){
System.out.println("少年");
break;
}
if(age>=29 && age<=55){
System.out.println("中年");
break;
}
else{
System.out.println("老年");
break;
}
}
}
}
18.打印 X 图形:
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
while(input.hasNext())
{
int n=input.nextInt();
char[][]arr=new char[n][n];
for(int i=0;i<n;i++){
for (int j = 0; j <n; j++) {
arr[i][j]=' ';
}
}
for (int i = 0; i <n; i++) {
arr[i][i]='*';
}
for(int j=0;j<n;j++)
{
arr[j][n-j-1]='*';
}
for(int i=0;i<n;i++){
for (int j = 0; j <n; j++) {
System.out.println(arr[i][j]);
}
System.out.println();
}
}
}
}
19.猜数字游戏
完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。
mport java.util.Scanner;//导入包中的Scanner34类
import java.util.Random;
public class Test{public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
Random random=new Random();
int rand=random.nextInt(100);//括号中的数表示生成随机数的范围while(true){
System.out.println("请输入一个数:");
int num=scan.nextInt();
if(num>rand){
System.out.println("你猜大了");
}
else if(num==rand){
System.out.println("猜对了");
break;//猜对了跳出循环
}
else{
System.out.println("猜小了");
}
}
System.out.println("游戏结束!");
}
}
20.水仙花数
求出100~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1+5+3?,则153是一个“水仙花数“。)
public class Test{
public static void main(String[] args) {
int sum=0;
for (int i =100; i <999 ; i++) {
int j=i%10;
int k=i/10%10;
int y=i/100%10;
sum=j*j*j+k*k*k+y*y*y;
if(i == sum){
System.out.println(i);
}
}
}
}
21.计算分数的值 。
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。
public class Test{
public static void main(String[] args) {
int i=1;
int n=0;
double sum=0,a=1,b=1;
while(i<100){
if(n%2==0){
sum=sum+a;
n=n+1;
}else{
sum=sum-a;
n=n+1;
}
a=1/(b+2);
b=b+2;
i=i+1;
}
System.out.println("和为:"+sum);
}
}
22.最大公约数
求两个正整数的最大公约数:
import java.util.Scanner;
public class Test{public static void main(String[] args) {
System.out.println("请输入两个数:");
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
int c=0;
while(true){
c=a%b;
if(c == 0){
break;
}
else{
a=b;
b=c;
}
}
System.out.println(b);
}
}
23.二进制1的个数。
求一个整数,在内存当中存储时,二进制1的个数:
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个数:");
int num=scanner.nextInt();
int count=0;
for (int i = 0; i <32 ; i++) {
if(((num>>i)&1)==1){
count++;
}
}
System.out.println(count);
}
}
24.输出一个整数的每一位
输出一个整数的每一位,如:123的每一位是1 , 2 , 3:
import java.util.Scanner;
public class Test{public static void print(int num){
if(num>9){
print(num/10);
}
System.out.println(num%10+"");
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个整数:");
int num=scanner.nextInt();
print(num);
}
}
25.输出乘法口诀表
输出n*n的乘法口诀表,n由用户输入。
import java.util.Scanner;
public class Test{public static void multiplicationTable(int n) {
int i=1;
int j=1;
for (i= 1; i <n ;i++) {
for (j = 1; j <i ; j++) {
System.out.println(j+"*"+i+"="+j*i+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
multiplicationTable(n);
}
}
26.求和的重载
在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果:
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个整数:");
int a1=sc.nextInt();
System.out.println("请输入第二个整数:");
int a2=sc.nextInt();
System.out.println("请输入第一小数");
double b1=sc.nextDouble();
System.out.println("请输入第二小数");
double b2=sc.nextDouble();
System.out.println("请输入第三小数");
double b3=sc.nextDouble();
System.out.println("整数和:"+sum(a1,a2));
System.out.println("小数和:"+sum(b1,b2,b3));
}
public static int sum(int a1,int a2){
return a1+a2;
}
public static double sum(double a1,double a2,double a3){
return a1+a2+a3;
}
}
27.求最大值方法的重载
在同一个类中定义多个方法:要求不仅可以求两个整数的最大值,还可以求两个小数的最大值,以及两个小数和一个整数的大小关系:
import java.util.Scanner;
public class Test {public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
System.out.println("两个整数中最大的是:" + max(a, b));
double i = scan.nextDouble();
double j = scan.nextDouble();
System.out.println("两个小数中最大的是:" + max(i, j));
double x = scan.nextDouble();
double y = scan.nextDouble();
int k = scan.nextInt();
System.out.println("两个小数和一个整数中最大的是:" + max(i, j, k));
}
public static int max(int a, int b) {
return a > b ? a : b;
}
public static double max(double i, double j) {
return i > j ? i : j;
}
public static double max(double i, double j, int k) {
return max(max(i, j), k);
}
}
28.求最大值
创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。
要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算:
import java.util.Scanner;
public class Test {public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入第一个数:");
int a1=sc.nextInt();
System.out.print("请输入第二个数:");
int a2=sc.nextInt();
System.out.print("请输入第三个数:");
int a3=sc.nextInt();
System.out.println("三个数中最大的是:"+max3(a1,a2,a3));
}
public static int max3(int n1,int n2,int n3){
int m1=max2(n1,n2);
return max2(m1,n3);
}
private static int max2(int n1, int n2) {
return n1>n2? n1:n2;
}
}