• 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:603715	estsrc
    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 }
  • 相关阅读:
    L2-004. 这是二叉搜索树吗?
    CF934A A Compatible Pair
    CF937B Vile Grasshoppers
    CF940B Our Tanya is Crying Out Loud
    ZOJ 3182 Nine Interlinks
    ZOJ 3175 Number of Containers
    Codeforces Round #193 (Div. 2) B
    CodeForces 149D Coloring Brackets
    POJ 2653 Pick-up sticks(计算几何)
    UVA 12506 Shortest Names
  • 原文地址:https://www.cnblogs.com/jiangwz/p/7286921.html
Copyright © 2020-2023  润新知