Java综合题目
Posted 谁将新樽辞旧月,今月曾经照古人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java综合题目相关的知识,希望对你有一定的参考价值。
分支, 循环, 数据类型
1, 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
2, 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
3, 题目:求1!+2!+3!+...+20!的和(5!表示5的阶乘, 即5*4*3*2*1)
4, 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
5, 题目:先写一个程序, 随机生成一个3*3的矩阵数字(1-9数字全部用到不能重复), 然后求这个3*3矩阵对角线元素之和
6, 回忆包装类对应的基础数据类型和基本方法的使用
将字符串转成数字(Long, Integer, Short, Byte, Double, Float)
字符串转换成字符数组, 并分别输出
7, 查API文档, 找出将2进制, 8进制, 16进制形式的字符串转换成的Integer数字的方法, 在控制台上打印出来
8, 取一个随便的字符串中字母出现的次数, 打印出来
9, 有一个字符串形式的任意日期是"yyyy-MM-dd"的格式, 计算这个日期到1949年10月1日差了多少天
面向对象+容器+流
1, 从data.txt文件中读取数据到程序中, 实现一个联动功能, 即输入主食会显示"1---馒头 2---煎饼 3---米饭", 再次输入会显示下一级菜单
data.txt文件中每一行都有被 "," 分割的三个值, 第一个值代表这项食物的编号(对于整个数据来说是唯一的), 第三个值表示所属的上一级食物分类
2, 写一个程序统计一个项目中src下的所有 .java 文件的代码行数(用流的知识)
读到流
去空格
查看开始结尾
3, 写一个带线程同步的程序模拟5个人在火车站买票, 总共有4张票
1 //1, 题目:有1、2、3、4个数字,能组成多少个互7;不相同且无重复数字的三位数? 2 //都是多少? 3 public static void t1(){ 4 int num=0; 5 6 for(int i=1;i<=4;i++){ 7 for(int j=1;j<=4;j++){ 8 for(int k=1;k<=4;k++){ 9 if(i!=j&&i!=k&&j!=k){ 10 num+=1; 11 System.out.println(i*100+j*10+k); 12 } 13 } 14 } 15 } 16 System.out.println("共有"+num+"种方案"); 17 }
1 public static void t2(){ 2 //2, 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 3 double s=2; 4 double x=1; 5 double temp; 6 double sum=0; 7 for(int i=0;i<20;i++){ 8 sum=s/x+sum; 9 temp=x; 10 x=s; 11 s=temp+s; 12 } 13 System.out.println(sum); 14 }
1 public static long jiecheng(long l){ 2 //求阶乘 3 long k=1; 4 for(int i=1;i<=l;i++){ 5 k=k*i; 6 } 7 return k; 8 } 9 public static void t3(){ 10 //求1!+2!+3!+...+20!的和(5!表示5的阶乘, 即5*4*3*2*1) 11 long sum=0; 12 for(int i=1;i<=20;i++){ 13 sum=sum+jiecheng(i); 14 } 15 System.out.println(sum); 16 }
1 public static void t4(){ 2 //一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同 3 Scanner sc=new Scanner(System.in); 4 String s=sc.nextLine(); 5 String[] ss=s.split(""); 6 if(ss[0].equals(ss[4])&&ss[1].equals(ss[3])){ 7 System.out.println("是回文数"); 8 }else{ 9 System.out.println("不是回文数"); 10 } 11 sc.close(); 12 }
1 public static void t5(){ 2 //5, 题目:先写一个程序, 随机生成一个3*3的矩阵数字(1-9数字全部用到不能重复), 然后求这个3*3矩阵对角线元素之和 3 List l1=new ArrayList(); 4 List l2=new ArrayList(); 5 List l3=new ArrayList(); 6 Random r=new Random(); 7 List list=new ArrayList(); 8 for(int i=1;i<=9;i++){ 9 list.add(i); 10 } 11 for(int j=0;j<3;j++){ 12 l1.add(list.remove(r.nextInt(9-j))); 13 } 14 for(int j=0;j<3;j++){ 15 l2.add(list.remove(r.nextInt(6-j))); 16 } 17 for(int j=0;j<3;j++){ 18 l3.add(list.remove(r.nextInt(3-j))); 19 } 20 System.out.println(l1); 21 System.out.println(l2); 22 System.out.println(l3); 23 System.out.println((int)l1.get(0)+(int)l2.get(1)+(int)l3.get(2)+(int)l1.get(2)+(int)l3.get(0)); 24 }
1 public static void t6(){ 2 //将字符串转成数字(Long, Integer, Short, Byte, Double, Float) 3 //字符串转换成字符数组, 并分别输出 4 Scanner sc=new Scanner(System.in); 5 System.out.println("请输入字符串数字"); 6 String s=sc.nextLine(); 7 System.out.println("Integer "+Integer.parseInt(s)); 8 System.out.println("Long "+Long.parseLong(s)); 9 System.out.println("Short "+Short.parseShort(s)); 10 System.out.println("Byte "+Byte.parseByte(s)); 11 System.out.println("Double "+Double.parseDouble(s)); 12 System.out.println("Float "+Float.parseFloat(s)); 13 System.out.println(Arrays.toString(s.toCharArray())); 14 }
1 public static void t7(){ 2 //查API文档, 找出将2进制, 8进制, 16进制形式的字符串转换成的Integer数字的方法, 在控制台上打印出来 3 //十六进制转成十进制 4 System.out.println(Integer.parseInt("FFFF",16)); 5 //八进制转成十进制 6 System.out.println(Integer.parseInt("777",8)); 7 //二进制转成十进制 8 System.out.println(Integer.parseInt("110",2)); 9 }
1 public static void t8(){ 2 //取一个随便的字符串中字母出现的次数, 打印出来 3 Scanner sc=new Scanner(System.in); 4 System.out.println("请输入字符串"); 5 String s=sc.nextLine(); 6 Map<String, Integer> map = new HashMap<String, Integer>(); 7 String[] ss = s.split(""); 8 9 for (String _s : ss) { 10 map.put(_s, map.get(_s) == null ? 1 : map.get(_s) + 1); 11 } 12 System.out.println(map); 13 }
1 public static void t9(){ 2 //有一个字符串形式的任意日期是"yyyy-MM-dd"的格式, 计算这个日期到1949年10月1日差了多少天 3 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 4 Date smdate = null; 5 Date bdate = null; 6 try { 7 smdate = sdf.parse("1949-10-1"); 8 bdate = sdf.parse("1949-09-1"); 9 smdate=sdf.parse(sdf.format(smdate)); 10 bdate=sdf.parse(sdf.format(bdate)); 11 } catch (ParseException e) { 12 // TODO Auto-generated catch block 13 e.printStackTrace(); 14 } 15 Calendar cal = Calendar.getInstance(); 16 cal.setTime(smdate); 17 long time1 = cal.getTimeInMillis(); 18 cal.setTime(bdate); 19 long time2 = cal.getTimeInMillis(); 20 long between_days=(time2-time1)/(1000*3600*24); 21 22 System.out.println(String.valueOf(between_days)); 23 }
从data.txt文件中读取数据到程序中, 实现一个联动功能, 即输入主食会显示"1---馒头 2---煎饼 3---米饭", 再次输入会显示下一级菜单
data.txt文件中每一行都有被 "," 分割的三个值, 第一个值代表这项食物的编号(对于整个数据来说是唯一的), 第三个值表示所属的上一级食物分类
1 package com.hanqi.maya.test; 2 3 public class Food { 4 private String id; 5 private String name; 6 private String parentid; 7 8 public Food(String id, String name, String parentid) { 9 super(); 10 this.id = id; 11 this.name = name; 12 this.parentid = parentid; 13 } 14 15 public String getId() { 16 return id; 17 } 18 19 public void setId(String id) { 20 this.id = id; 21 } 22 23 public String getName() { 24 return name; 25 } 26 27 public void setName(String name) { 28 this.name = name; 29 } 30 31 public String getParentid() { 32 return parentid; 33 } 34 35 public void setParentid(String parentid) { 36 this.parentid = parentid; 37 } 38 39 @Override 40 public String toString() { 41 return "Food [id=" + id + ", name=" + name + ", parentid=" + parentid + "]"; 42 } 43 44 }
1 package com.hanqi.maya.test; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileNotFoundException; 6 import java.io.FileReader; 7 import java.io.IOException; 8 import java.io.Reader; 9 import java.util.ArrayList; 10 import java.util.List; 11 import java.util.Scanner; 12 13 import java.io.File; 14 import java.io.FileNotFoundException; 15 import java.io.FileReader; 16 import java.io.IOException; 17 import java.io.Reader; 18 import java.util.ArrayList; 19 import java.util.List; 20 import java.util.Scanner; 21 22 public class Test10 { 23 public static void main(String[] args) { 24 File file = new File("E:\\Java\\0803test\\data.txt"); 25 List<Food> list = new ArrayList<Food>(); 26 Reader reader = null; 27 try { 28 reader = new FileReader(file); 29 BufferedReader br = new BufferedReader(reader); 30 String s = null; 31 while((s = br.readLine())!=null) { 32 String[] ss = s.split(","); 33 if(ss.length==3) { 34 Food food = new Food(ss[0],ss[1],ss[2]); 35 list.add(food); 36 } 37 } 38 br.close(); 39 40 } catch (FileNotFoundException e) { 41 e.printStackTrace(); 42 } catch (IOException e) { 43 e.printStackTrace(); 44 } 45 for(Food ff : list) { 46 if("0".equals(ff.getParentid())) { 47 System.out.println(ff.getId()+"---"+ff.getName()); 48 } 49 } 50 51 Scanner scanner = new Scanner(System.in); 52 boolean flag = true; 53 String in_str = scanner.nextLine(); 54 while(flag) { 55 if("exit".equals(in_str)) { 56 flag = false; 57 } else { 58 printFood(list, in_str); 59 in_str = scanner.nextLine(); 60 } 61 } 62 scanner.close(); 63 64 } 65 66 public static void printFood(List<Food> list, String pid) { 67 for(Food ff : list) { 68 if(pid.equals(ff.getParentid())) { 69 System.out.println(ff.getId()+"---"+ff.getName()); 70 } 71 } 72 } 73 74 }
写一个程序统计一个项目中src下的所有 .java 文件的代码行数(用流的知识)
1 package practise; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileNotFoundException; 6 import java.io.FileReader; 7 import java.io.IOException; 8 import java.io.Reader; 9 10 public class Test11 { 11 12 private static int daima; 13 private static int kongbai; 14 private static int zhushi; 15 16 public static void main(String[] args) { 17 // F:\0603\0715\test\src 18 19 /* 20 * 统计代码行数 代码行数 注释行数 空白行数 21 */ 22 23 File file = new File("F:\\0603\\0715\\test\\src"); 24 25 if (file.exists()) { 26 countor(file); 27 System.out.println("代码行数: " + daima); 28 System.out.println("空白行数: " + kongbai); 29 System.out.println("注释行数: " + zhushi); 30 } else { 31 System.out.println("找不到路径 !"); 32 } 33 34 } 35 36 public static void countor(File file) { 37 38 File[] f_list = file.listFiles();//获取文件夹下文件和子文件夹 39 40 for (File f : f_list) { 41 if (f.isDirectory()) { 42 countor(f); 43 } else { 44 try { 45 boolean flag = false; 46 Reader reader = new FileReader(f);//读取文件 47 BufferedReader br = new BufferedReader(reader); 48 String s = null; 49 while ((s = br.readLine()) != null) { 50 System.out.println(s); 51 if (s.trim().startsWith("/*")) { 52 flag = true; 53 } else if (s.trim().endsWith("*/")) { 54 flag = false; 55 } else if (flag) { 56 zhushi++; 57 } else if (s.trim().startsWith("//")) { 58 zhushi++; 59 } else if (s.trim().length() != 0 60 && !(s.trim().startsWith("/*") 61 && s.trim().startsWith("//"))) { 62 daima++; 63 } else if (!flag&&s.trim().length() == 0) { 64 kongbai++; 65 } 66 } 67 br.close(); 68 } catch (FileNotFoundException e) { 69 e.printStackTrace(); 70 } catch (IOException e) { 71 e.printStackTrace(); 72 } 73 74 } 75 } 76 } 77 78 }
写一个带线程同步的程序模拟5个人在火车站买票, 总共有4张票
1 package practise; 2 3 import model.Station; 4 5 public class Test12 { 6 7 public static void main(String[] args) { 8 9 MyThread mt = new MyThread(); 10 11 Thread t1 = new Thread(mt); 12 t1.setName("甲"); 13 Thread t2 = new Thread(mt); 14 t2.setName("乙"); 15 Thread t3 = new Thread(mt); 16 t3.setName("丙"); 17 Thread t4 = new Thread(mt); 18 t4.setName("丁"); 19 Thread t5 = new Thread(mt); 20 t5.setName("二"); 21 22 t1.start(); 23 t2.start(); 24 t3.start(); 25 t4.start(); 26 t5.start(); 27 } 28 29 } 30 31 32 class MyThread implements Runnable { 33 public Station station = new Station(); 34 35 @Override 36 public void run() { 37 station.sale(Thread.currentThread().getName()); 38 } 39 }
1 package model; 2 3 public class Station { 4 public int tickets = 4; 5 6 public synchronized void sale(String name) { 7 if (tickets > 0) { 8 try { 9 Thread.sleep(1); 10 } catch (InterruptedException e) { 11 // TODO Auto-generated catch block 12 e.printStackTrace(); 13 } 14 System.out.println(name + "买走了第" + tickets-- + "张票"); 15 } else { 16 System.out.println("票没了"); 17 } 18 } 19 }
以上是关于Java综合题目的主要内容,如果未能解决你的问题,请参考以下文章