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 }

 

posted @ 2017-08-04 20:24  谁将新樽辞旧月,今月曾经照古人  阅读(283)  评论(0编辑  收藏  举报