【Java精品源码栏目提醒】:以下是网学会员为您推荐的Java精品源码-50道JAVA基础编程练习题(含答案) - 计算机等级,希望本篇文章对您学习有所帮助。
50 道
JAVA 基础编程练习题
Java 学习笔记 2010-03-19 17:45:01 阅读 1117 评论 6 字号:大中小 订阅【程序 18】题目:两个乒乓球队进行比赛,各出三人。
甲队为 abc 三人,乙队为 xyz 三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a 说他不和 x 比,c 说他不和 xz 比,请编程序找出三队赛手的名单。
import
java.util.ArrayListpublic class Lx18 String abc public static void mainString args String op quotxquot quotyquot quotzquot ArrayListltLx18gt arrayListnew ArrayListltLx18gt for int i 0 i lt 3 i for int j 0 j lt 3 j for int k 0 k lt 3 k Lx18 anew Lx18opiopjopk ifa.a.equalsa.bampampa.b.equalsa.campampa.a.equalsquotxquot ampampa.c.equalsquotxquotampampa.c.equalsquotzquot arrayList.adda forObject a:arrayList System.out.printlna public Lx18String a String b String c super this.a a this.b b this.c c Override public String toString // TODO Auto-generated method stub return quota的对手是quotaquotquotquotb的对手是quotbquotquotquotc的对手是quotcquotnquot 【程序26】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
import
java.util.Scannerpublic class Lx26 / param args / public static void mainString args // TODO Auto-generated method stub char weekSecond Scanner input new ScannerSystem.in System.out.printquot请输入星期值英文的第一个字母,我来帮您判断是星期几:quot String letter input.next // 判断用户控制台输入字符串长度是否是一个字母 if letter.length 1 // 利用取第一个索引位的字符来实现让Scanner接收char类型输入 char weekFirst letter.charAt0 switch weekFirst case m: // 当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能 case M: System.out.printlnquot星期一Mondayquot break case t: case T: System.out.printquot由于星期二Tuesday与星期四Thursday均以字母T开头,故需输入第二个字母才能正确判断:quot letter input.next if letter.length 1 weekSecond letter.charAt0 if weekSecond U weekSecond u System.out.printlnquot星期二Tuesdayquot break else if weekSecond H weekSecond h System.out.printlnquot星期四Thursdayquot break else System.out.printlnquot输入错误,不能识别的星期值第二个字母,程序结束!quot break else System.out.printlnquot输入错误,只能输入一个字母,程序结束!quot break case w: case W: System.out.printlnquot星期三Wednesdayquot break case f: case F: System.out.printlnquot星期五Fridayquot break case s: case S: System.out.printquot由于星期六Saturday与星期日Sunday均以字母S开头,故需输入第二个字母才能正确判断:quot letter input.next if letter.length 1 weekSecond letter.charAt0 if weekSecond A weekSecond a System.out.printlnquot星期六Saturdayquot break else if weekSecond U weekSecond u System.out.printlnquot星期日Sundayquot break else System.out.printlnquot输入错误,不能识别的星期值第二个字母,程序结束!quot break else System.out.printlnquot输入错误,只能输入一个字母,程序结束!quot break default: System.out.printlnquot输入错误,不能识别的星期值第一个字母,程序结束!quot break else System.out.printlnquot输入错误,只能输入一个字母,程序结束!quot 做完【程序35】题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
import
java.util.Scannerpublic class Lx35 / param args / public static void mainString args // TODO Auto-generated method stub int i int temp1 int temp2 Scanner in new ScannerSystem.in int a in.nextInt int array new inta for i 0 i lt a i System.out.printlnquot请输入第quot i 1 quot个数字quot arrayi in.nextInt int max 0 int min 0 for i 1 i lt a i if arrayi gt arraymax max i if arrayi lt arraymin min i temp1 array0 temp2 arraymin array0 arraymax arraymax temp1 if min 0 arraymin arraya - 1 arraya - 1 temp2 else arraymax arraya - 1 arraya - 1 temp1 for i 0 i lt a i // 输出数组 System.out.printarrayi quot quot 做完【程序36】题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数import
java.util.Scannerpublic class Lx36 / param args / public static void mainString args // TODO Auto-generated method stub Scanner innew ScannerSystem.in System.out.printquot请输入一个数n代表n个整数:quot int n in.nextInt int a new intn System.out.printquot请输入quotnquot个数:quot for int i 0 i lt a.length i ai in.nextInt System.out.printquot请输入一个数:quot int m in.nextInt int b new intm int c new intn - m for int i 0 i lt m i bi ai for int i m j 0 i lt n i j cj ai for int i 0 i lt n - m i ai ci for int i 0 i lt a.length i System.out.printai quot quot 做了【程序 1】题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(20 个月)1.程序分析: 兔子的规律为数列 1123581321....public class Ex1 / param args / public static void mainString args // TODO 自动生成的方法存根 // 兔子的规律为数列1123581321.... forint i1ilt20i System.out.printlnfi public static int fint x ifx1x2 return 1 else return fx-1fx-2 做了【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt这个数,如果能被整除,则表明此数不是素数,反之是素数。
import
java.util.ArrayListpublic class Ex2 / param args / public static void mainString args // TODO 自动生成的方法存根 //int x0 ArrayList list new ArrayList//集合用来装所有的素数 forint i101ilt200i boolean btrue//标签为b为真 forint j2jltij ifij0//求余数是否为0 b false//如果为0 将标签设置为false break //可以整除就跳出这个循环 ifbtrue// list.addi//将符合要求的i加到集合里 // x 素数个数加1 System.out.printlnquot素数为:quotlist 做了【程序 3】题目:打印出所有的quot水仙花数quot,所谓quot水仙花数quot是指一个三位数,其各位数字立方和等于该数本身。
例如:153 是一个quot水仙花数quot,因为 1531 的三次方+5 的三次方+3 的三次方。
1.程序分析:利用 for 循环控制 100-999 个数,每个数分解出个位,十位,百位。
public class Ex3 / param args / public static void mainString args // TODO 自动生成的方法存根 forint i100ilt999i int hi/100 int j int k int ai100 ifagt10 ja/10 ka10 else j0 ka ifhhhjjjkkki System.out.printlni 做了【程序4】题目:将一个正整数分解质因数。
例如:输入90打印出902335。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:1如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
2如果nltgtk,但n能被k整除,则应打印出k的值,并用n除以k的商作为新的正整数你n重复执行第一步。
3如果n不能被k整除,则用k1作为k的值重复执行第一步。
import
java.util.Scannerpublic class exp2 public static void mainString args int k Scanner in new ScannerSystem.in System.out.printlnquot请输入一个正整数quot int n in.nextInt// System.out.printn quotquot for k 2 k lt 88 k// while n k// 找到最小质数 if n k 0 System.out.printk quotquot n n / k else break System.out.printlnn 做了【程序 5】题目:利用条件运算符的嵌套来完成此题:学习成绩gt90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。
1.程序分析:agtba:b 这是条件运算符的基本例子。
import
java.util.Scannerpublic class Ex5 public static void mainStringargs Scanner in new ScannerSystem.in System.out.printlnquot请输入成绩:quot double n in.nextDouble graden //成绩计算器 public static void gradedouble n ifngt100nlt0 System.out.printlnquot输入无效quot else String str ngt90quot分属于A等quot:ngt60quot分属于B等quot:quot分属于C等quot System.out.printlnnstr 做了【程序 6】题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
import
java.util.Scannerpublic class Lx6 / param args / public static void mainString args // TODO Auto-generated method stub Scanner in new ScannerSystem.in int m int n System.out.printlnquot请输入一个数quot min.nextInt System.out.printlnquot请输入另一个数quot nin.nextInt System.out.printlnmquot 和 quotnquot的最大公约数是quotgys mn System.out.printlnmquot 和 quotnquot的最小公倍数是quotgbs mn //最大公约数 public static int gysint mint n whilemn0 int rmn mn nr return n //最小公倍数 public static int gbsint mint n return mn/gysmn 做了【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用 while 语句条件为输入的字符不为n.import
java.util.Scannerpublic class Ex7 / param args / public static void mainString args // TODO Auto-generated method stub int abc 0// 英文字母个数 int sp 0// 空格键个数 int num 0// 数字个数 int oth 0// 其他字符个数 Scanner in new ScannerSystem.in System.out.printlnquot输入一行字符quot String str in.nextLine char ch str.toCharArray//作用:将字符串拆分为字符到数组。
for int i 0 i lt ch.length i if Character.isLetterchi // 判断是否字母 abc else if Character.isDigitchi // 判断是否数字 num else if Character.isSpaceCharchi // 判断是否空格键 sp else // 以上都不是则认为是其他字符 oth System.out.printlnquot字母个数:quot abc System.out.printlnquot数字个数:quot num System.out.printlnquot空格个数:quot sp System.out.printlnquot其他字符个数:quot oth 做了【程序 8】题 目 : 求 saaaaaaaaaaaa...a 的 值 , 其 中 a 是 一 个 数 字 。
例 如222222222222222此时共有 5 个数相加,几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
import
java.util.Scannerpublic class Ex8 / param args / public static void mainString args // TODO Auto-generated method stub System.out.printlnquot输入a的值0-9之间quot Scanner in new ScannerSystem.in int a in.nextInt System.out.printlnquot输入a叠加的最大个数quot int num in.nextInt int sum 0 for int i 1 i lt num i //i是个数 int temp 0 //每一项的值 for int j 1 j lt i j temp Math.pow10 j - 1 a sum temp System.out.printlnquotquotsum 做了【程序9】题目:一个数如果恰好等于它的因子之和,这个数就称为quot完数quot。
例如61+2+3.编程 找出1000以内的所有完数 。
public class Ex9 / param args / public static void mainString args // TODO Auto-generated method stub forint i1ilt1000i int sum0 forint j1jltij ifij0 sumj ifsumi System.out.printlni 做了【程序10】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?public class Ex10 / param args / public static void mainString args // TODO Auto-generated method stub double i 100 double sun 0 for int j 0 j lt 10 j i i / 2 sun i System.out.printlnsun System.out.printlni 做了【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去 掉不满足条件的排列。
public class Lx11 / param args / public static void mainString args // TODO Auto-generated method stub int a 0 for int i 1 i lt 4 i for int k 1 k lt 4 k for int j 1 j lt 4 j ifijampampjkampampik int sum i 100 k 10 j a System.out.printlnsum .
上一篇:
记事本源码
下一篇:
"夜"