java编程例题
- 格式:doc
- 大小:530.71 KB
- 文档页数:76
java 集合编程题含解答共5道1. 编写Java程序,将一个数组转换为ArrayList。
```javaimport java.util.ArrayList;import java.util.Arrays;import java.util.List;public class ArrayToArrayList {public static void main(String[] args) {String[] array = {Java, Python, C++, JavaScript};List<String> arrayList = new ArrayList<>(Arrays.asList(array));System.out.println(Array converted to ArrayList: + arrayList);}}```2. 编写Java程序,查找ArrayList中是否存在特定的元素。
```javaimport java.util.ArrayList;public class ArrayListSearch {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add(Apple);list.add(Banana);list.add(Orange);list.add(Grapes);String searchElement = Banana;if (list.contains(searchElement)) {System.out.println(searchElement + found in the ArrayList.);} else {System.out.println(searchElement + not found in the ArrayList.);}}}```3. 编写Java程序,将两个ArrayList合并为一个。
JAVA编程50题及答案【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题public class lianxi01 {public static void main(String[] args) {System.out.println("第1个月的兔子对数: 1");System.out.println("第2个月的兔子对数: 1");int f1 = 1, f2 = 1, f, M=24;for(int i=3; i<=M; i++) {f = f2;f2 = f1 + f2;f1 = f;System.out.println("第" + i +"个月的兔子对数: "+f2);}}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class lianxi02 {public static void main(String[] args) {int count = 0;for(int i=101; i<200; i+=2) {boolean b = false;for(int j=2; j<=Math.sqrt(i); j++){if(i % j == 0) { b = false; break; }else { b = true; }}if(b == true) {count ++;System.out.println(i );}}System.out.println( "素数个数是: " + count);}}【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
java考试编程题库及答案Java考试编程题库及答案1. 基础语法题- 题目:编写一个Java程序,实现两个整数的加法运算,并打印结果。
- 答案:```javapublic class Addition {public static void main(String[] args) {int num1 = 5;int num2 = 10;int sum = num1 + num2;System.out.println("The sum is: " + sum);}}```2. 控制结构题- 题目:编写一个Java程序,判断一个整数是否为素数,并打印结果。
- 答案:```javapublic class PrimeCheck {public static void main(String[] args) {int number = 29;if (isPrime(number)) {System.out.println(number + " is a primenumber.");} else {System.out.println(number + " is not a prime number.");}}public static boolean isPrime(int n) {if (n <= 1) return false;for (int i = 2; i <= Math.sqrt(n); i++) {if (n % i == 0) return false;}return true;}}```3. 数组与循环题- 题目:编写一个Java程序,打印数组中所有元素的平方。
- 答案:```javapublic class SquareElements {public static void main(String[] args) {int[] numbers = {1, 2, 3, 4, 5};for (int i = 0; i < numbers.length; i++) {int square = numbers[i] * numbers[i];System.out.println("Square of " + numbers[i] + " is " + square);}}}4. 面向对象题- 题目:定义一个名为`Car`的类,包含属性`color`和`speed`,以及一个方法`increaseSpeed(int increment)`来增加速度。
50道JAVA基础编程练习题【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不就是素数,【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"就是指一个三位数,其各位数字立方与等于该数本身。
例如:153就是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
【程序4】题目:将一个正整数分解质因数。
例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
【程序6】题目:输入两个正整数m与n,求其最大公约数与最小公倍数。
【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字与其它字符的个数。
【程序8】题目:求s=a+aa+aaa+aaaa+aa、、、a的值,其中a就是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
【程序9】题目:一个数如果恰好等于它的因子之与,这个数就称为"完数"。
例如6=1+2+3、编程找出1000以内的所【程序10】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都就是多少?程序分析:可填在百位、十位、个位的数字都就是1、2、3、4。
JA V A编程实例大全及详解答案(50例)【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题public class lianxi01 {public static void main(String[] args) {System.out.println("第1个月的兔子对数: 1");System.out.println("第2个月的兔子对数: 1");int f1 = 1, f2 = 1, f, M=24;for(int i=3; i<=M; i++) {f = f2;f2 = f1 + f2;f1 = f;System.out.println("第" + i +"个月的兔子对数: "+f2);}}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
public class lianxi02 {public static void main(String[] args) {int count = 0;for(int i=101; i<200; i+=2) {boolean b = false;for(int j=2; j<=Math.sqrt(i); j++){if(i % j == 0) { b = false; break; }else { b = true; }}if(b == true) {count ++;System.out.println(i );}}System.out.println( "素数个数是: " + count);}【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
1.编写一个数的阶乘和。
eg. Sum=1!+2!+3!+4!+5! publicclass j1_20 {publicstaticvoid main(String[] args) {int a,sum,b=0,i;sum=0;for(b=1;b<=5;b++){a=1;for(i=1;i<=b;i++){a=a*i;}sum+=a;}System.out.println("1到5的结成和"+sum);}}结果2.把一个数组里的数字按照从小到大的顺序排列出来publicclass j_sort {publicstaticvoid main(String[] args) {int a[]=newint[]{12,15,63,56,21,71,91,3,16,43}; for(int i=0;i<10;i++){for(int j=i+1;j<10;j++){if(a[i]>a[j]){int t;t=a[i];a[i]=a[j];a[j]=t;}}}System.out.println("从小到大的顺序为:"); for(int i=0;i<10;i++){System.out.print(a[i]+" ");}}}结果是3.输出一个三角形publicclass j_triangle1 {publicstaticvoid main(String[] args) {int a=5,b=5;for(int i=1;i<5;i++){for(int j=0;j<5-i;j++){System.out.print(" ");}for(int e=1;e<=i;e++){System.out.print(""+" ");}System.out.println("");}System.out.println("-----------");for(int i=1;i<5;i++){for(int j=0;j<5-i;j++){System.out.print(" ");}for(int e=1;e<2*i;e++){System.out.print("");}System.out.println("");}}}结果是4,.输出最小公约数是publicclass j_prime {publicstaticvoid main(String[] args) {int a=3,b=4,i;for(i=1;i>0 ;i++){if(i%a==0&&i%b==0){System.out.print("最小公约数是:"+i); break;}}}}结果是5.最大公约数publicclass j偶数和 {publicstaticvoid main(String[] args) {int a,sum=0;for(a=1;a<=100;a++){if(a%2==0){sum+=a;}}System.out.println("一百以内的偶数和"+sum);}}6.输出99乘法口诀publicclass j99表 {publicstaticvoid main(String[] args) {// 效果1int a,b,sum;for(a=1;a<10;a++){for(b=1;b<=a;b++){char c=(char)a;char d=(char)b;System.out.printf("%d"+"*"+"%d"+"="+a*b+"\t",a,b);}System.out.println(" ");}// //效果2// int i,j,k;// for(i=1;i<=9;i++)// {// for(j=1;j<=i;j++)// {// k=i*j;// System.out.print( " \t" +k);// }// System.out.print( "\n" );// }}}结果是7.统计个位数是 6 ,并且能被 3 整除的 5 位数共有多少个?publicclass j3_6 {publicstaticvoid main(String[] args) {int a,i=1000,sum=0;for(i=1000;i<10000;i++){a=10*i+6;if(a%6==0){sum+=1;}}System.out.print("统计个位数是 6 ,并且能被 3 整除的 5 位数共有:"+sum+"个!");}}结果是8.输出100以内的所有质数publicclass j100内质数 {publicstaticvoid main(String[] args) {int a,b,sum=0;for(a=2;a<=100;a++){boolean flag=true;for(b=2;b<a;b++){if(a%b==0) flag=false;}if(flag){System.out.println(a);sum+=1;}}System.out.println("一共有"+sum+"质数");}}结果是10.输出大于200的最小质数publicclass j4 {publicstaticvoid main(String[] args) {int a=200,b=2;for (a=200; ;a++){boolean flag=true;for(b=2;b<a;b++) {if (a%b==0) flag=false;}if(flag){System.out.println("大于200的最小质数是:"+a); break;}}}}结果是。
java编程题1、(1)编写一个圆类Circle,该类拥有:①一个成员变量Radiu(私有,浮点型);//存放圆的半径;②两个构造方法Circle()//将半径设为0Circle(doubler)//创建Circle对象时将半径初始化为r③三个成员方法doublegetArea()//获取圆的面积doublegetPerimeter()//获取圆的周长voidhow()//将圆的半径、周长、面积输出到屏幕编写应用程序,创建类的对象,分别设置圆的半径,计算并分别显示圆半径、圆面积、圆周长。
2、定义一个表示学生信息的类Student,要求如下:(1)类Student的成员变量:NO表示学号;Name表示姓名;Se某表示性别;Age表示年龄;Java:表示Java课程成绩。
(2)类Student带参数的构造方法:在构造方法中通过形参完成对成员变量的赋值操作。
(3)类Student的方法成员:getNo():获得学号;getName():获得姓名;getSe某():获得性别;getAge()获得年龄;getJava():获得Java课程成绩(4)根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
3、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
4、用Java语言定义一个员工类Employee(1)员工类Employee属性有:id:String型,代表员工ID号name:String型,代表姓名age:int型,代表年龄5、题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数?6、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
java选择语句编程题题目:编写一个Java程序,根据用户输入的成绩(0-100分),判断并输出相应的等级。
要求:1.使用Scanner类接收用户输入的成绩;2.使用if-else语句判断成绩所属等级;3.输出对应的等级。
解析:首先需要导入java.util.Scanner类,然后创建一个Scanner对象接收用户输入的成绩,接着使用if-else语句判断成绩所属等级,最后输出对应的等级。
代码:```javaimport java.util.Scanner;public class GradeLevel{public static void main(String[]args){Scanner scanner=new Scanner(System.in);System.out.println("请输入成绩(0-100分):");int score=scanner.nextInt();if(score>=90&&score<=100){System.out.println("成绩等级:优秀");}else if(score>=80&&score<90){System.out.println("成绩等级:良好");}else if(score>=70&&score<80){System.out.println("成绩等级:中等");}else if(score>=60&&score<70){System.out.println("成绩等级:及格");}else{System.out.println("成绩等级:不及格"); }}}```。
Java基础编程练习题一、基本语法1. 编写一个Java程序,输出“Hello, World!”。
2. 声明一个整型变量并赋值为10,然后输出该变量的值。
3. 编写一个Java程序,实现两个整数的加、减、乘、除运算。
4. 编写一个Java程序,判断一个整数是奇数还是偶数。
5. 编写一个Java程序,交换两个变量的值。
二、控制结构1. 使用ifelse语句判断一个年份是否为闰年。
2. 编写一个Java程序,使用for循环输出1到100的所有偶数。
3. 使用while循环计算1+2+3++100的和。
4. 编写一个Java程序,使用dowhile循环输出1到10的所有整数。
5. 使用switch语句实现一个简单的计算器程序,支持加、减、乘、除四种运算。
三、数组1. 声明一个整型数组,并初始化为{1, 2, 3, 4, 5},然后输出数组中的每个元素。
2. 编写一个Java程序,计算数组中所有元素的和。
3. 实现一个方法,用于查找数组中的最大值。
4. 编写一个Java程序,将一个字符串数组按照字母顺序排序。
5. 使用二维数组输出一个5x5的乘法表。
四、字符串操作1. 编写一个Java程序,连接两个字符串。
2. 实现一个方法,判断一个字符串是否为回文。
3. 编写一个Java程序,将字符串中的所有小写字母转换为大写字母。
4. 使用StringBuilder类实现字符串的逆序输出。
5. 编写一个Java程序,计算一个字符串中某个字符出现的次数。
五、面向对象基础1. 创建一个名为Person的类,包含姓名、年龄和性别属性,并提供相应的构造方法和getter/setter方法。
2. 编写一个Java程序,实现两个Person对象的比较(按年龄比较)。
3. 创建一个Student类,继承自Person类,并添加成绩属性。
4. 编写一个Java程序,实现Student类的多态。
5. 创建一个接口Animal,包含吃、睡觉和叫三个方法,然后创建两个类Dog和Cat实现该接口。
1[题目大意]:在平面上给出的n个点中,判断最多可以组成多少个正方形。
[输入]每个案例的第一行是点的个数n,接下来的n行是各点的坐标(x,y) ,当n=0时,结束.[输出]:对每个案例输出这n个点可以组成的正方形个数.[样例]:Sample Input41 00 11 10 090 01 02 00 21 22 20 11 12 14-2 53 70 05 2Sample Output161[解题分析]:枚举两个点,然后把这两个点的连线作为正方形的一边,然后找能与这两个点构成正方形的另外两个点是否存在在给出的点集里面。
在一个集合里面找点的方法有很多,比如二分搜索和hash都可以。
如何求正方形的另外两个点呢,如图:用已知两个点做出两个全等三角形。
之后就得出结论(x1+|y1-y2|,y1+|x1-x2|),(x2+|y1-y2|,y2+|x1-x2|)。
当然这只是一种情况,其他情况类似。
[代码]:import java.util.Scanner;import java.util.HashSet;public class Main{private int n;private Point p[];private HashSet< Point> pset=new HashSet< Point>();private int sum;public Main(int n,Point p[]){this.n=n;this.p=p;for(int i=0;i< p.length;i++)pset.add(p[i]);}public int getSum(){return sum;}public void doIt(){int bound;int a1, a2, b1, b2, ab1, ab2, x1, y1, x2, y2, x3, y3, x4, y4;for (int i = 0; i < n; i++){for (int j = i + 1; j < n; j++) {a1 = p[i].getX();a2 = p[i].getY();b1 = p[j].getX();b2 = p[j].getY();ab1 = a1 - b1;ab2 = a2 - b2;x1 = a1 + ab2;y1 = a2 - ab1;x2 = b1 + ab2;y2 = b2 - ab1;if (pset.contains(new Point(x1, y1)) && pset.contains(new Point(x2, y2))) sum++;x3 = a1 - ab2;y3 = a2 + ab1;x4 = b1 - ab2;y4 = b2 + ab1;if (pset.contains(new Point(x3, y3)) && pset.contains(new Point(x4, y4))) sum++;}}}public static void main(String args[]){Scanner in=new Scanner(System.in);int x=0;int y=0;while(true){int n=in.nextInt();if(n==0) break;Point p[]=new Point[n];for(int i=0;i< n;i++){x=in.nextInt();y=in.nextInt();p[i]=new Point(x,y);//System.out.println(p[i]);}Main m=new Main(n,p);m.doIt();System.out.println(m.getSum()/4);}}}class Point{private int x;private int y;public Point(int x,int y){this.x = x;this.y = y;}public void setX(int x){this.x=x;}public void setY(int y){this.y=y;}public int getX(){return this.x;}public int getY(){return this.y;}public boolean equals(Object o){if (this == o){return true;}if (o.getClass() == Point.class){Point p = (Point)o;return (p.x==x) && (p.y==y); }return false;}public int hashCode() {long bits = getX();bits ^= getY() * 31;return (((int) bits) ^ ((int) (bits >>32)));}public String toString(){return "Point[" +x+"," +y+ "]";}}2.[题目大意]:翻转游戏是在4*4的正方形里进行的,每个小正方形放有拥有黑白两面的棋子。
每一轮你翻转3-5个棋子,把它从白变黑或从黑变白。
翻转的规则如下:1. 选择任意一个棋子。
2. 翻转选择的棋子和与它相临的前后左右的棋子(如果有的话)参考如下例子:bwbwwwwwbbwbbwwbb表示黑色在上面,w表示白色在上面。
如果选择第三行第一个棋子进行翻转结果如下:bwbwbwwwwwwbwwwb游戏的目标在于使所有白色或所有黑色朝上,你的任务是计算完成目标所需要的最少步数。
[输入]输入4行,每行4单词w或b,表示游戏初始格局。
[输出]:输出完成目标所需最小步数。
如果最初格局及达到目标,输出0;不能达到目标输出“Impossible”(不用引号)。
[样例]:Sample InputbwwbbbwbbwwbbwwwSample Output4[解题分析]:实际上我们完全可以只枚举第一行的操作,第一行有(翻,翻,翻,翻)(翻,翻,翻,不翻)。
(不翻,不翻,不翻,不翻)16种,如果我们想把棋子全部翻成一种颜色的话,那么第二行的操作就是固定的了(因为第一行的棋子的状态对第二行棋子的翻转进行了约束,如果想把第一行的棋子变成白色,那么第二行中位于第一行黑色棋子下方的位置必须翻转,反之亦然),那么第三行、第四行的操作显然也是固定的了。
[代码]:import java.util.Scanner;public class Main{static int steps=Integer.MAX_VALUE;//(x,y)坐标合起来就是中心点及上下左右坐标啦!static int[] dx={0,0,0,1,-1};static int[] dy={0,1,-1,0,0};/** 把每一行的状态和整个状态都以2进制表示,四个2进制数排成一行,组成整个状态。
* 1010* 0000* 1101* 1001*如图的状态表示为:1010000011011001* @param x横坐标点(注意:坐标系右下为(0,0)左上为(3,3))* @param y纵坐标点* @param source(整个状态如上面的1010000011011001)* @return 改变确定位置的状态,如1变成0或者0变成1* */public static int flip(int x, int y, int source){if(x >= 0 && x < 4 && y >= 0 && y < 4)source ^= 1 << (x * 4 + y);return source;}/** @param current当前行* @param num 回合数* @param source 原数据,比如:1010000011011001* @param flag 标志如果数据源当前位的状态不为flag,则翻动* */public static void dfs(int current,int num,int source,int flag){ //如果最后一行已经翻完if(current==4){if(source==0xffff||source==0){//已经完成了任务steps=num< steps?num:steps;}return;}//把当前行都翻成同种颜色int x,y;for (int i = current-1,j=0; j < 4; j++) {//每行有四个,翻或者不翻,所以需要四次if( (((source& (1<< (i*4+j) ))>>(i*4+j)) ^ flag)==1 ){ /*source& (1<< (i*4+j) )>>(i*4+j) :把source中的(i,j)的状态取出来*/for (int k = 0; k <5; k++) {//当前,上下左右都得翻动 x=current+dx[k];y=j+dy[k];source=flip(x, y, source);}num++;}}//翻下一行dfs(current+1, num, source, flag);}/* 第一行共有16种翻法(翻,翻,翻,翻)(翻,翻,翻,不翻)。
(不翻,不翻,不翻,不翻)* */public static int solve(int source){for (int i = 0; i < 16; i++) {int num=0,temp=source,x,y;for (int j = 0; j < 4; j++) { // 这个循环是翻第一行if((i&(1<< j))>0){for (int k = 0; k <5; k++) {//当前,上下左右都得翻动x=0+dx[k];y=j+dy[k];temp=flip(x, y, temp);}num++;}}dfs(1, num, temp, 0); //全部翻成白色dfs(1, num, temp, 1); //全部翻成黑色}return steps==Integer.MAX_VALUE?-1:steps;}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int source=0;String string="";for (int i = 0; i < 4; i++) {string+=scanner.nextLine().trim();}// System.out.println(string);for (int i = 0; i < string.length(); i++) {source=(source<<1)+(string.substring(i,i+1).equals("b")?1:0);}// System.out.println(Integer.toBinaryString(source));if(solve(source)!=-1){System.out.println(steps);}else {System.out.println("Impossible");}}}其具体实现思想是这样的:首先把字符转化成int ,而且以二进制的方式操作。