经典Java编程90例及答案

更新时间:2023-11-17 09:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

非常经典的JAVA编程全集

【程序1】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

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(\第\个月的兔子对数: \ } } }

【程序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( \素数个数是: \} }

【程序3】

题目:打印出所有的\水仙花数\,所谓\水仙花数\是指一个三位数,其各位数字立方和等于该数本身。例如: 153是一个\水仙花数\,因为153=1的三次方+5

的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

public class lianxi03 {

public static void main(String[] args) { int b1, b2, b3;

for(int m=101; m<1000; m++) { b3 = m / 100;

b2 = m % 100 / 10; b1 = m % 10;

if((b3*b3*b3 + b2*b2*b2 + b1*b1*b1) == m) { System.out.println(m+\是一个水仙花数\ } } }

【程序4】

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

import java.util.*;

public class lianxi04{

public static void main(String[] args) { Scanner s = new Scanner(System.in);

System.out.print( \请键入一个正整数: \ int n = s.nextInt(); int k=2;

System.out.print(n + \ while(k <= n) {

if(k == n) {System.out.println(n);break;}

else if( n % k == 0) {System.out.print(k + \ else k++; } } }

【程序5】

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 程序分析:(a>b)?a:b这是条件运算符的基本例子。

import java.util.*; public class lianxi05 {

public static void main(String[] args) { int x;

char grade;

Scanner s = new Scanner(System.in); System.out.print( \请输入一个成绩: \ x = s.nextInt(); grade = x >= 90 ? 'A' : x >= 60 ? 'B' :'C';

System.out.println(\等级为:\ } }

【程序6】

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

import java.util.*;

public class lianxi06 {

public static void main(String[] args) { int a ,b,m;

Scanner s = new Scanner(System.in); System.out.print( \键入一个整数: \ a = s.nextInt();

System.out.print( \再键入一个整数: \ b = s.nextInt();

deff cd = new deff(); m = cd.deff(a,b); int n = a * b / m;

System.out.println(\最大公约数: \ System.out.println(\最小公倍数: \} }

class deff{

public int deff(int x, int y) { int t;

if(x < y) { t = x; x = y; y = t;

}

while(y != 0) { if(x == y) return x; else {

int k = x % y; x = y; y = k; } }

return x; } }

程序分析:利用while语句,条件为输入的字符不为'\\n'.

【程序7】

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 import java.util.*; public class lianxi07 {

public static void main(String[] args) { int digital = 0; int character = 0; int other = 0; int blank = 0;

char[] ch = null;

Scanner sc = new Scanner(System.in); String s = sc.nextLine(); ch = s.toCharArray();

for(int i=0; i= '0' && ch <= '9') { digital ++;

} else if((ch >= 'a' && ch <= 'z') || ch > 'A' && ch <= 'Z') { character ++;

} else if(ch == ' ') { blank ++; } else { other ++; } }

System.out.println(\数字个数: \

System.out.println(\英文字母个数: \ System.out.println(\空格个数: \ System.out.println(\其他字符个数:\

} }

【程序8】

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如

2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 程序分析:关键是计算出每一项的值。

import java.util.*; public class lianxi08 {

public static void main(String[] args) { long a , b = 0, sum = 0;

Scanner s = new Scanner(System.in); System.out.print(\输入数字a的值: \ a = s.nextInt();

System.out.print(\输入相加的项数:\ int n = s.nextInt(); int i = 0;

while(i < n) { b = b + a;

sum = sum + b; a = a * 10; ++ i; }

System.out.println(sum); } }

【程序9】

题目:一个数如果恰好等于它的因子之和,这个数就称为\完数\。 例如6=1+2+3.编程 找出1000以内的所有完数。

public class lianxi09 {

public static void main(String[] args) {

System.out.println(\到1000的完数有: \ for(int i=1; i<1000; i++) { int t = 0;

for(int j=1; j<= i/2; j++) { if(i % j == 0) { t = t + j; } }

if(t == i) {

System.out.print(i + \\ }

f[0]=f[1]=1;

for(i=2;i<10;i++) f[i]=f[i-1]+f[i-2]; 【程序66】

题目:建一个数值型数组,计算其中的奇数个数及所有奇数值和。 【程序67】 题目:编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。 【程序68】

题目:上题的方法setDemo改用构造函数实现初始化。 【程序69】

题目:编程创建一个Point类,在其中定义两个变量表示一个点的坐标值,再定义构造函数初始化为坐标原点,然后定义一个方法实现点的移动,再定义一个方法打印当前点的坐标。并创建一个对象验证。 【程序70】

题目:定义一个类实现银行帐户的概念,包括的变量有\帐号\和\存款余额\,包括的方法有\存款\、\取款\和\查询余额\。定义主类,创建帐户类的对象,并完成相应操作。 【程序71】

题目:定义如下基本的类,要求用继承实现:点(point)类、圆(Circle)类、圆柱(Cylinder)类,圆继承点,圆柱继承圆。并可以计算圆半径、圆面积及圆柱体积。

【程序72】

题目:定义一个媒体(media)类,包含有名称、作者、出版社和价格等信息,并且可以从键盘输入这些信息。然后创建media的子类:书本(book)、唱片(cd)类。

【程序73】

题目:定义一个circle类,其中包括计算圆面积和圆周长的方法,若输入的半径小于0,则抛出一个自定义异常。 【程序74】

题目:编写一个除法程序,要求除数和被除数都从键盘中输入。如果输入的被除数是一个非数值型,如6y,则不需输入除数程序就自动中断并抛出NumberFormatException异常。如果输入的除数为0则程序抛出ArithmeticException异常。并用finally处理最终结果。 【程序75】

题目:设计一个从命令行(键盘)输入一个字符串的程序,若该字符串值为“123“则抛出一个Exception123的异常(自定义)对象,并显示”由字符串123所引起的异常”。 【程序76】

题目:编写一个日期计算程序。设计要求:(选做一个) 1)、由用户输入一个月份,屏幕上输出这个月的月历,每星期一行,从星期日开始到星期六结束。 2)、由用户输入一个日期,屏幕回答是星期几。

3)、由用户输入两个日期,计算着两个日期之间相差几天。 【程序77】

题目:输入一个字符串,统计其中各个字符出现的次数。 public class Object01 { char c; int count;

public Object01(char c, int count ){ this.c= c;

this.count=count; } }

import java.util.ArrayList; import java.util.Scanner;

//计算输入的每个字符出现的次数 public class RateNum {

private void countNum(String str) {

ArrayList al = new ArrayList(); //System.out.println(\ //Object01 obj = null;

for (int i = 0; i < str.length(); i++) { //将string拆成一个一个char类型的字符

char c = str.charAt(i);

int count = 1; //默认的出现的次数为1 if(al.size()==0){ //输入第一个字符 al.add(new Object01(c, count));

}else{ //每输入一个新的字符都需要和前面的字符一一比较

int flag=0;

for(int j=0;j

Object01 obj1 = (Object01) al.get(j); char c1 = obj1.c;

int count1 = obj1.count;

//System.out.println(c1 + \ if(c==c1){ //如果该字符在数组中出现,将该字符对应的次数加1 ,更新该字符的数据,并跳出循环 count1++; flag=1;

al.remove(obj1);

al.add(new Object01(c,count1)); break; }

}

if(flag==0){ //如果以上循环没有找到相同字符,将新的字符加入数组

al.add(new Object01(c,count)); } } }

//输出结果

for (int k = 0; k < al.size(); k++) { Object01 obj2 = (Object01) al.get(k);

System.out.println(obj2.c + \times \ }

}

public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print(\ String s = sc.nextLine(); new RateNum().countNum(s); } }

【程序78】

题目:从键盘输入3个整数,计算以这3个数边的三角形是否为直角三角形。 【程序79】

题目:实现计算器功能:可以进行+、-、*、/四则运算。

public class lianxi79{ public int CountValue; Computer (int a){ CountValue=a; }

public void increment (){ CountValue++; }

public void decrement (){ CountValue--; }

public void reset (){ CountValue=0; }

public static void main(String args[]){ Computer MyV=new Computer(10); MyV.increment(); MyV.increment(); MyV.increment();

System.out.println(MyV. CountValue); MyV.decrement ();

System.out.println(MyV. CountValue); MyV. reset ();

System.out.println(MyV. CountValue); } }

【程序80】

题目:编写一个Applet程序,使用drawRoundRect()方法绘制8个同心圆,各圆之间相差10个像素。 【程序81】

题目:在版面(60,60)处显示字符串“按顺序变换水平线为红绿蓝色”,以Serif字体、粗体、20像素大小显示。 【程序82】 题目:编写一个程序,请用户输入一个圆的半径和一系列坐标值,显示圆的直径,周长和面积并绘制该圆。 【程序83】

题目:编写程序显示5个大小不同的三角形,每个三角形都应填充不同的颜色。 【程序84】

题目:绘制一个操场图形,要求操场跑道为黄色,操场内部为绿色。 【程序85】

题目:用drawLine()方法绘制8*8方格图形。并改用drawRect()绘制同样图形。

【程序86】

题目:编写一个媒体播放器。 【程序87】

题目:编程包含一个单选按钮组和一个普通按钮,单选按钮组中包含三个单选,文本说明分别为\普通\、\黑体\和\斜体\。选择文本标签为\普通\的单选按钮时,普通按钮中的文字为普通字体,选择文本标签为\黑体\的单选按钮时,普通按钮中的文字的字体为黑体,选择文本标签为\斜体\的单选按钮时,普通按钮中的文字的字体为斜体。 【程序88】

题目:编程包含一个下拉列表和一个按钮,下拉列表中有10、14、18三个选项。选择10时,按钮中文字的字号为10,选择14时,按钮中文字的字号为14,选择18时,按钮中文字的字号为18。 【程序89】

题目:文本内容的复制:在界面上放置两个文本区域和一个按钮。文本区域1

设置为不可编辑,文本区域2设置为可编辑。在文本区域1中选择文本,点击按钮,文本内容将会被复制到文本区域2。 【程序90】

题目:创建一个Canvas扩展类,该程序根据用户按下的按钮来确定是画一条直线、一个矩形还是一个椭圆。

本文来源:https://www.bwwdw.com/article/992v.html

Top