Excise_day05_Array

选择题
1.编译和运行以下代码的结果为:
public class Hello{
public static void main(String a){
System.out.println(“Hello”);
}
}
A.编译错误
B.运行输出 “Hello”
C.编译无错,但运行时指示没有定义构造方法
D.编译无错,但运行时指示没有正确定义main方法

2.下列代码出错的行是:

  1. public void modify() {
  2. int i, j, k;
  3. i = 100;
  4. while ( i > 0 ) {
  5.    j = i * 2;  
    
  6.    System.out.println (" The value of j is " + j );
    
  7.    k = k + 1;
    
  8.    i--;
    
  9. }
  10. }
    A.4 B.6 C.7 D.8

3.int类型整型变量在内存中的位数为:
A.8 B.16 C.32 D.64

4.浮点数的字面量的类型是:
A.int
B.float
C.double
D.long

5.char类型的整数范围是:
A.0 … 32767
B.0 … 65535
C.–256 … 255
D.–32768 … 32767

6.char,int,long,float,double的范围由低到高的顺序是:
A.int-char-long-float-double
B.long-float-int-double-char
C.int-long-float-double-char
D.char-int-long-float-double

7.在Java中语句:37/10的运算结果为:
A.3
B.3.70
C.3.7
D.3.0

  1. 在Java语句中,运算符&&实现:
    A.逻辑或
    B.逻辑与
    C.逻辑非
    D.逻辑相等

9.编译运行以下程序后,关于输出结果的说明正确的是:
public static void main(String args[ ]){
int x=4;
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
}
A.输出结果为:value is 99.99
B.输出结果为:value is 9
C.输出结果为:value is 9.0
D.编译错误

10.请看下列代码:
public void testIfA() {
if (testIfB(“True”)) {
System.out.println(“True”);
}else{
System.out.println(“Not true”);
}
}
public boolean testIfB(String str) {
return Boolean.valueOf(str);
}
调用testIfA方法,程序的结果是:
A.输出Not true
B.输出True
C.代码 if (testIfB(“True”)) { 行,编译错误
D.代码 return Boolean.valueOf(str); 行,编译错误

11.下列语句序列执行后,k 的值是
int i=10, j=18, k=30;
switch( j - i ){
case 8 : k++;
case 9 : k+=2;
case 10: k+=3;
default : k/=j;
}
A.31
B.32
C.2
D.33

  1. 以下由 for 语句构成的循环执行的次数是:
    for ( int i = 0; true ; i++) ;
    A.执行3次
    B.无限次
    C.执行1次
    D.一次也不执行

13.观察以下程序段 :
int i=1,j=10;
do{
if(i++>–j){// 1,9, 2,8, 3,7 4, 6 , 5, 结束 ,j= 6
continue;
}
} while(i<5);
执行完后, i 、 j 的值分别为:
A.i=6 j=5
B.i=5 j=5
C.i=6 j=4
D.i=5 j=6

14.下列代码段编译和运行的结果是:
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
if (i > 6)
break;
}
System.out.println(i);
}
A.输出6
B.输出7
C.输出10
D.编译错误

15.下面程序的输出结果是:
public static void main(String[] args) {
int d = 325;
int sum = 0;
while (d > 0) {
int n = d % 10; 5 2 3
sum += n; 5 7 10
d /= 10; 32 3 0
}
System.out.println(sum);
}
A.10
B.12
C.5
D.32

16.关于while和do-while循环,下列说法正确的是
A.两种循环除了格式不同外,功能完全相同
B.与do-while语句不同的是,while语句的循环至少执行一次
C.do-while语句首先计算终止条件,当条件满足时,才去执行循环体中的语句
D.与while语句不同的是,do-while语句的循环至少执行一次

17.下列代码编译和运行的结果是:
public static void main(String[] args) {
int[] x = { 1, 2, 3, 4, 5 };
int[] y = x;
System.out.println(y[2]);
}
A.输出2
B.输出3
C.输出4
D.编译错误

18.Java语言可以跨平台的原因是:
A.Java面向对象
B.Java虚拟机
C.Java垃圾回收机制
D.Java编译器

19.执行下列代码后,哪个结论是正确的 String[] s=new String[10];
A. s[9] 为 null;
B. s[9] 为 “”;
C. s[0] 为 未定义
D. s.length 为 10

20.下列选项中能正确编译的是:
A. public static void main(String[] args) {
int one=12;
System.out.println(one);
}

B.public static void main(String[] args) {
int one;
one=12;
System.out.println(one);
}

C. public static void main(String[] args) {
int one;
System.out.println(one);
}
D.public static void main(String[] args) {
int one;
int m=10;
if(m>0){
one=12;
}
System.out.println(one);
}

21.下列程序编译或运行的结果是:
public static void main(String[] args) {
for(int i=0;i<=100;i++) {
int num = 100;
}
for(int j=0;j<=100;j++) {
int num = 200;
}
int num = 300;
System.out.println(num);
}
A.输出:100
B.输出:200
C.输出:300
D.编译出错

22.语句System.out.println(1+2+“java”+3+4)输出的结果是:
A.3java34
B.12java34
C.3java7
D.12java7

23.下列语句中相当于三元条件运算符ex1 ? ex2 : ex3的是:
A.if (ex1) ex2 ; else ex3;
B.if (ex2) ex1 ; else ex3;
C.if (ex1) ex3 ; else ex2;
D.if (ex3) ex2 ; else ex1;

24.请看下列代码:
public static void main(String args[]){
for(int x = 0;x<3;x++){
for(int y = 0;y<2;y++){
if (x1){
break;
}
if(x
2 && y ==1){
break;
}
System.out.print(x); 000120
System.out.print(y);
}
}

}
上面程序的输出结果是
A. 00
B. 0001
C. 000120
D. 00012021

25.下列代码段中,循环执行的次数是:
int x = 10;
do{
x–;
}while(x <= 5);

A.10次
B.0次
C.1次
D.超过10次

26.下列选项的数据类型中,能存储汉字’达’的是:
A.int
B.byte
C.short
D.char

27.请看下列代码:
public static void main(String[] args) {
《插入代码》
if (isRight) {
System.out.println(“right!”);
}
}
请在《插入代码》处,填入变量isRight声明的同时进行初始化的代码:
A.boolean isRight=false;
B.int isRight=1;
C.int isRight=0;
D.boolean isRight = true;

28.请看下列代码的输出结果是:
public static void main(String[] args) {
double opr = 0;
int compare = opr > 0 ? 1 : (opr < 0 ? -1 : 0);
System.out.println(“f(” + opr + “)=” + compare);
}
A.f(0.0)=1
B.f(0.0)=-1
C.f(0.0)=0
D.f(0.0)=-2

29.下列代码段编译和运行的结果是:
public static void main(String[] args) {
int result=0;
for (int i=0; i <= 10; i++) {
if (i > 5){ i = 1,2,3,4,5,6
break;
}
result+=i; result =0 , 1, 3,6,10, 15
}
System.out.println(result);
}
A.输出50 B.输出15 C.输出10 D.编译错误

简答题:
1.成员变量和局部变量的区别?

  • ①声明的位置不同,成员变量声明在类体中方法外,局部变量声明在类体方法中,或代码块中。

  • ②成员变量有默认值,局部变量没有默认值,使用之前必须初始化(必须手动赋值才能使用)否则编译报错

  • ③作用域不同。成员变量作用域是整个所在类。局部变量作用域是所在方法或代码块中

  • ④当成员变量和局部变量同名时,变量的使用遵循就近原则。

2.怎么定义一个方法?为什么要定义方法?

  • 修饰符 返回值类型 方法名(参数列表){方法体;}

  • 定义方法的作用:提高代码的复用性

3.什么是方法的重载?

  • 在同一个类中,方法名相同,参数列表不同的方法叫方法的重载。
    注意: 参数列表不同指定是参数个数,参数类型,或参数顺序的不同,不是形参名的不同。方法重载与方法体无关。与返回值类型和访问权限无关。

4.什么是可变参数?

  • 可变参数,jdk 5.0开始支持用连续的三个点表示:
    语法格式:数据类型 …形参变量名
    可变参数只要类型匹配,个数不限。
    当参数列表有多个参数时,可变参数必须放在参数列表的最后。否则编译报错
    可变参数本质上是数组,可变参数参数名相当于数组名

编程题:
1.定义isSame方法,用来判断两个数字是否相同。

   public static boolean isSame(double num1, double num2){
        if (num1 == num2){ //当 == 两边是基本数据类型时,比较的是变量里的值。如果两边是引用类型。则比较的是地址值。
            return true;
        }else {
            return false;
        }
    }

2.定义getSum方法,用来求出1-100之间所有数字的和并返回。

  public static int getSum(int num){
        int sum = 0;
        for (int i = 0; i <= num;i++){
            sum += i;
        }
        return sum;
    }

3.定义printCount方法,用来打印指定次数的HelloWorld。

public static void printCount(int num){//使用单元测试方法:必须由public void 修饰。不能有参数
        for (int i = 0; i < num;i++){
            System.out.println("HelloWorld");
        }
    }

4.定义三个重载方法并调用。方法名为calculate。
三个方法分别接收一个int参数(执行平方运算并输出结果)、两个int参数(相乘并输出结果)、一个字符串参数(输出字符串信息)。

 /*
    * 4.定义三个重载方法并调用。方法名为calculate。
    三个方法分别接收一个int参数(执行平方运算并输出结果)、两个int参数(相乘并输出结果)、一个字符串参数(输出字符串信息)。
   */
    public int calculate(int num) {
        return num * num;
    }

    public void calculate(int num1, int num2) {
        System.out.println("num1 * num2 = " + num1 * num2);
    }
    public void calculate(String str){
        System.out.println(str);
    }
  1. 封装getBall方法,随机生成一组双色球的中奖号码:
    • 红球为1-33中随机6个不重复的数字
    • 蓝球为1-16中随机一个数字
      在main方法中接收用户输入的双色球号码,判断用户是否中奖,中奖规则如下:
    • 一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同)
    • 二等奖:6个红色球号码相符;
    • 三等奖:5个红色球号码和1个蓝色球号码相符;
    • 四等奖:5个红色球号码,或4个红色球号码和1个蓝色球号码相符;
    • 五等奖:4个红色球号码,或3个红色球号码和1个蓝色球号码相符;
    • 六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。
package com.huacit.day05;

import org.junit.Test;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

/**
 * @author yyc
 * 5. 封装getBall方法,随机生成一组双色球的中奖号码:
 * 	 * 红球为1-33中随机6个不重复的数字
 * 	 * 蓝球为1-16中随机一个数字
 * 在main方法中接收用户输入的双色球号码,判断用户是否中奖,中奖规则如下:
 * 	 * 一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同)
 * 	 * 二等奖:6个红色球号码相符;
 * 	 * 三等奖:5个红色球号码和1个蓝色球号码相符;
 * 	 * 四等奖:5个红色球号码,或4个红色球号码和1个蓝色球号码相符;
 * 	 * 五等奖:4个红色球号码,或3个红色球号码和1个蓝色球号码相符;
 * 	 * 六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。
 */
public class Excise_day05_2 {
    public static void main(String[] args) {
        //1.声明Scanner对象用于接收用户输入
        Scanner input = new Scanner(System.in);
        int[] userBalls = new int[7];
        //2.循环接收用户输入的红球号存放入数组中
        for (int i = 0; i < userBalls.length - 1; i++){
            System.out.println("请输入第"+ (i+1) + "个红球号码:");
            userBalls[i] = input.nextInt();
        }
        //3.用户输入蓝球号码
        System.out.println(" 请输入蓝色球号码:");
        userBalls[userBalls.length - 1] = input.nextInt();

        //4.对用户输入的红球号码进行排序
        Arrays.sort(userBalls);
        //5.获取中奖号码数组
        int[] luckyBalls = getBall();
        System.out.println("luckyBalls : " + Arrays.toString(luckyBalls));
        System.out.println( "userBalls : " +Arrays.toString( userBalls));
        //6.记录红球号码中奖个数
        int redCount = 0;
        for (int i = 0; i < userBalls.length - 1; i++){
            if (userBalls[i] == luckyBalls[i]){
                redCount++;
            }
        }
        //7.记录蓝色球中奖个数, 0 或 1;
        int blueCount = 0;
        if (userBalls[userBalls.length - 1] == luckyBalls[luckyBalls.length - 1]){
            blueCount ++;
        }

        /* 一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同)
         * 二等奖:6个红色球号码相符;
         * 三等奖:5个红色球号码和1个蓝色球号码相符;
         * 四等奖:5个红色球号码,或4个红色球号码和1个蓝色球号码相符;
         * 五等奖:4个红色球号码,或3个红色球号码和1个蓝色球号码相符;
         * 六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。
        * */
         if (redCount + blueCount == 7){
            System.out.println("一等奖");
        } else if(redCount == 6){
            System.out.println("二等奖");
        } else if (redCount == 5 && blueCount == 1){
            System.out.println(" 三等奖");
        } else if ( redCount == 5 || redCount == 4 && blueCount == 1){
            System.out.println("四等奖");
        } else if (redCount == 3 || 4 == redCount && 1 == blueCount){
            System.out.println("五等奖");
        } else if (blueCount == 1){
            System.out.println("六等奖");
        }else{
             System.out.println("亲!与幸运擦边而过呢!");
         }
    }

   @Test
    public  static int[] getBall(){
        /*
        * 1.定义一个红球池,随机产生1-33中随机6个不重复的数字
        * 2.蓝球为1-16中随机一个数字
        * 3.把生成的红球和蓝球装在数组中,形参双色球号码组
         * */
        //1.定义一个红球数组,随机产生1-33中随机6个不重复的数字
        Random random = new Random();
        int[] redBalls = new int[6];
        for (int i = 0; i < redBalls.length;){
            redBalls[i] = random.nextInt(34)+1;
            for (int j = 0; j < i; j++){
                //如果新生成的红球数组中已经有相同的号,i--重新生成。
                if (redBalls[i] == redBalls[j]){
                    i--;
                }
            }
            i++;
        }
        //对红球排序
        Arrays.sort(redBalls);

        //2、蓝球为1-16中随机一个数字
        int blueBall = random.nextInt(17);

        //3、把生成的红球和蓝球装在数组中,形参双色球号码组
        int[] luckyBalls = Arrays.copyOf(redBalls,7);
        luckyBalls[luckyBalls.length - 1] = blueBall;
        //System.out.println(Arrays.toString(redBalls));
        return luckyBalls;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值