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 }
时间: 2024-12-11 09:11:52

Java综合题目的相关文章

【Java基础】Java面试题目整理与解说(二)

1.Collection 和 Collections 的差别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的差别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完毕了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

【Java基础】Java面试题目整理与讲解(二)

1.Collection 和 Collections 的区别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的区别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

(转)喜马拉雅2018 Java面试题目

背景:将网上的题目整理下. java基础 1:hashTable hashMap ConcurrentHashMap 的区别.数据结构.线程安全 2:equals和==区别, 重写equals一定要重写hashcode方法吗?为什么?hashcode方法有什么作用? 这个万年不变的面试题,这是何等的卧槽 ==说明: 对于基本类型来说 ,==比较两个基本类型的值是否相等, 对于引用类型来说,==比较的是内个引用类型的内存地址 equals说明: equals用来比较的是两个对象的内容是否相等,由于

JAVA 字符串题目 以静态方法实现encode()和decode()的调用

题目: 用java语言实现两个函数encode()和decode(),分别实现对字符串的变换和复原.变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串: (1)若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中: (2)若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中: (3)若已知字符串的当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复

java经典题目

/***********Ryear.java begin********************/ import java.util.Scanner;public class Ryear { /** * @param args */ public static void main(String[] args) { /** * 编写程序,判断给定的某个年份是否是闰年. * 闰年的判断规则如下: * (1)若某个年份能被4整除但不能被100整除,则是闰年. * (2)若某个年份能被400整除,则也是

【应聘】阿里巴巴Java面试题目

原文地址:http://blog.csdn.net/free0sky/article/details/7927275   一.String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? 答:   1.String是字符串常量,StringBuffer和StringBuilder都是字符串变量.后两者的字符内容可变,而前者创建后内容不可变. 2.String不可变是因为在JDK中String类被声明为一个final类. 3.StringBuf

java基础题目总结

有些基础题目由于工作中用的比较少但却又是不可少的,这样回答起来就会反应慢,不确定,不准确,特此开了文章记录遇到的不确定或者回答比较拗口的问题. 1.servlet是单例的吗,是安全的吗,是多线程吗 servlet是单例的,根据web.xml实例化一次后,其他访问通过多线程的方式调用servlet实例. 因此,关于多线程访问共享变量的安全性问题已经是老生常谈了.这里只要知道servlet是单例的,其他问题也就解决了.servlet的实现方式决定了安全性.成员变量是否是静态的,是否上锁?关于调用成员

java OJ题目判断输入结束(与C语言的EOF结束等价)

/* * java 作Oj题目是会有输入若干数据的情况,不好判断输入结束符, * 类似于C语言中的EOF符号 * 在这里提供了一种方法 * */ 1 import java.util.Iterator; 2 import java.util.Scanner; 3 import java.util.TreeSet; 4 5 public class StudentCode { 6 7 public static void main(String[] args) { 8 TreeSet<Intege

一次Java面试题目记录

记忆得不太清楚了,不过一些基本问过的题目还是记得住的,就写一点吧. maven的使用情况问一点. snapshot和release版本的区别? maven的生命周期有了解过吗? 如何把自己写的架包推送到私服上?maven有一个deployed命令 maven有一个mirrors对吧,配置多个镜像的时候,多个镜像之间是怎么产生作用的?互相之间的作用是怎样的?调用顺序是. 如果有冲突会怎样?mirror本身是排除冲突的,我说的是你使用的哪一个插件的冲突,你配置的都是centre只会取一个. mirr