Java练习题

1.递归调用

/**
*1、递归实现斐波那契数列
*/
public class ClassName {
	public static void main(String[] args) {
		// 斐波那契数列
        Scanner sc = new Scanner(System.in);  
		System.out.println("请输入要求的斐波那契数:");
        int num = sc.nextInt();  // 从键盘获取数给变量num
		int fi = fiBonacci(num); // 调用fiBonacci()方法
        System.out.println(fi);
	}
    public static int fiBonacci(int num){
        if (num==1 || num==2){  // 递归出口
            return 1;
        }
        return fiBonacci(num-1)+fiBonacci(num-2);
    }
}
/**
/2、递归求阶乘
*/
public class ClassName {
	public static void main(String[] args) {
		// 阶乘
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要求的阶乘数:");
        int num = sc.nextInt();// 从键盘获取数给变量num
        int result = factorial(num);// 调用factorial()方法
        System.out.println(result);
	}
	public static int factorial(int num){
        if (num == 1){	// 递归出口
            return 1;
        }
        return num*factorial(num-1);
    }
}
/**
*3/九九乘法表
*/
public class ClassName {
	public static void main(String[] args) {
		// 九九乘法表
        multiplicationTable(1,1); // 调用multiplicationTable()方法
	}
    public static void multiplicationTable(int i,int j){
        if (j>i){ // i控制的是行数,所以每次j超过i就需要重置,并且i自增一
            System.out.println();
            j=1;
            i++;
        }
        if (i<=9){	//终止条件
            System.out.printf("%d x %d = %-2d ", j, i, i * j);// 使用printf控制输出的格式
            multiplicationTable(i,j+1);
        }
    }
}

2. 数组

/**1将一个整型数组中的0去掉后但会一个新数组.
*  例如: int[] arr={1,26,0,8,10,50,8,0,7,35,0,4,3,20,0,17};
*  要求:将以上数组中的0去掉,将不为0的值存入一个新数组,生成新的数组作为返回值.
*  int newArr={1,26,8,10,50,8,7,35,4,3,20,17};
*/
import java.util.Arrays;
public class ClassName {
	public static void main(String[] args) {
		int [] nums = {1,26,0,8,10,50,8,0,7,35,0,4,3,20,0,17};// 初始化数组
        int val = 0; // 需要去除的数
        int [] newNums = checkZero(nums,val); // 调用checkNum()方法并用newNUMS新数组接收
        System.out.println(Arrays.toString(newNums)); // 使用Arrays.toString()方法将数组以字符串输出
    }
    public static int[] checkZero(int[] nums, int val){
        int count = 0; //统计数组中不等于val的值数的个数
        for (int i : nums){ // 使用增强for循环遍历数组
            // 如果i不等于val则count自增一
            if (i!=val){
                count++;
            }
        }
        int[] newNums = new int[count]; // 创建新数组,并用统计好的数字作为新数组的长度
        int j=0;  // 作为新数组的索引
        for (int i : nums){	// 使用增强for循环遍历数组,将不等于val的值放入新数组中
            if (i != val){
                newNums[j] = i;
                j++;
            }
        }
        return newNums; // 返回新数组
    }
}
/*2.数组元素查找(查找指定元素第一次在数组中出现的索引)
* 若存在:返回这个元素的下标
* 若不存在:返回-1
*/
public class ClassName {
	public static void main(String[] args) {
		int [] nums = {1,26,0,8,10,50,8,0,7,35,0,4,3,20,0,17};// 初始化数组
        int val = 0; // 需要查找的数
		int index = find_num(nums,val); // 调用find_num方法找到对应数的下标,并用index接收
        System.out.println(index);
	}
    public static int find_num(int[] nums, int val){
        for (int i=0;i<nums.length;i++){  // 使用for遍历数组找到后返回对应下标,否则返回-1
            if (nums[i] == val){
                return i;
            }
        }
        return -1;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学java的期末复习资源,试题及答案 1、编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A.java B..class C.html D..exe 2、下面哪一项字符序列可以作为合法的标识符( )。 A.true B.null C.2018_year D.$2018year 3、下列选项中,( )不属于Java语言的简单数据类型。 A.整数型 B.数组 C.字符型 D.浮点型 4、对于int a[ ]=new int[3],下列叙述错误的是( )。 A. a.length的值是3 B. a[1]的值是1 C. a[0]的值是0 D. a[a.length-1]的值等于a[2]的值 5、用下列哪个代码替换程序标注的【代码】会导致编译错误? A.m-->0 B.m++>0 C.m = 0 D.m>100&&true; public class E { public static void main (String args[ ]) { int m=10,n=0; while(【代码】) { n++; } } } 6、以下关于继承的叙述正确的是( )。 A. 在Java中类不能多继承 B. 在Java中一个类只能实现一个接口 C. 在Java中一个类不能同时继承一个类和实现一个接口 D. 在Java中接口只能单一继承 7、对于下列Cat类,哪个叙述是错误的?( ) A.Cat类只有 2 个构造方法,而且没有无参数的构造方法 B.Cat类有 4 个构造方法 C.Cat (int m)和 Cat (double m)是互为重载的构造方法 D.int Cat (int m)和 void Cat (double m) 是互为重载的非构造方法 class Cat { Cat (int m){ } Cat (double m){ } int Cat (int m){ return 23; } void Cat (double m){ }} 8、下列叙述哪些是正确的( )。 A final 类可以有子类 B abstract类中只能有abstract方法 C abstract类中可以有非abstract方法,但该方法不可以用final修饰 D 不可以同时用final和abstract修饰一个方法 9、假设D类有如下定义,设d是D类的一个实例对象,下列语句调用错误的是 ( )。 class D{ int i; static String s; void method1(){} static void method2(){}} A.d.method1(); B.D.method2(); C.D.method1(); D.System.out.println(d.i); 10、将下列( )哪个代码替换下列程序中的【代码】不会导致编译错误。 A.public int f(){return 100+M;} B.int f(){return 100;} C.public double f(){return 2.6;}。 D.public abstract int f();
二级java 公共基础知识部分30分 专业语言部分 70分 Java语言程序设计 基本要求: 1. 掌握Java语言的特点,实现机制和体系结构。 2. 掌握Java语言中面向对象的特性。 3. 掌握Java语言提供的数据类型和结构。 4. 掌握Java语言编程的基本技术。 5. 会编写Java用户界面程序。 6. 会编写Java简单应用程序。 7. 会编写Java小应用程序(Applet)。 8. 了解Java的应用。 考试内容: 一、 Java语言的特点和实现机制 二、 Java体系结构 1. JDK目录结构。 2. Java的API结构。 3. 开发环境设置。 4. Java程序结构。 三、 Java语言中面向对象的特性。 1. 面向对象编程的基本要领和特征。 2. 类的基本组成和使用。 3. 对象的生成、使用和删除。 4. 接口与包。 5. Java类库中常用类和接口。 四、 Java简单数据类型及运算 1. 变量和常量。 2. 基本数据类型及转换。 3. Java类库中对简单数据类型的类包装。 4. 运算符和表达式运算。 5. 数组和字符串。 五、 Java语言的基本语句 1. 表达式语句。 2. 条件语句。 3. 循环语句。 4. 注释语句。 5. 异常处理。 六、 Java编程技术基础 1. 线程的要领和使用。 2. 同步与共享。 3. 串行化要领和目的。 4. 串行化方法。 5. 串行化的举例。 6. 基于文本的应用。 7. 文件和文件I/O。 8. 汇集(collections)接口。 七、 编写用户界面程序 1. 图形用户界面。 2. AWT库简介。 3. SwingF简介。 4. AWT与Swing比较。 八、 编写小应用程序(Applet) 1. 小应用程序概念。 2. 安全机制。 3. Applet执行过程。 4. Applet的图形绘制。 5. Applet的窗口。 6. Applet的工作环境。 7. Java Application 和Applet。 九、 Java的应用 十、 J2DK的下载和操作。 考试方式: 笔试:90分钟,满分100分,其中含公共基础知识部分的30分。 上机操作:90分钟,满分100分。 上机题目类型要求: (1) 基本操作。 (2) 简单应用。 (3) 综合应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值