`
jythoner
  • 浏览: 609086 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java每日一题24(最后一题)

阅读更多
昨天又写了个双色球程序,作为Java每日一题系列的终止符:
Java链接derby数据库,我将2003年至今的数据导入到了数据库中,可以对数据进行CRUD,最大的好处是,比如输入03 05 07,可以查到2003年至今这三个号分别在哪期出现过。
但是我觉得自己写的太拖沓,大家看看有哪些地方可以重构下,呵呵

我把项目打成jar包作为附件了,不过很奇怪,打成包以后,就找不到jdbc驱动了,了解这个和问题的朋友麻烦告知,万分感谢!!!


liangwenzheng 写道
敬请博主放过JAVA初级程序员!别再出这些题目了,会把人引入歧途的~结果只有一个,造就一批适用JAVA程序设计语言写C程序的人!
我好心劝你一句而已,你却和我抬杠,呵呵~
初学者走的路很重要,要是一开始就被带沟里去了,后患无穷。
本着 对他人做点善事的思想 再次拜请博主三思~
PS:别拿无知当个性!


为了不把一些高手带到沟里去,我决定停止出题,感谢大家多日以来的关注和支持,在此谢过,我会继续写其他方面的blog,Java,Python,Oracle,DB2,Linux,AIX,欢迎大家MSN交流:core5277@hotmail.com



import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Properties;
import java.util.Scanner;

public class DoubleBall {
	
	private String driver = "org.apache.derby.jdbc.EmbeddedDriver";
	private String dbName = "/DoubleBall";
	private String dbURL = "jdbc:derby:" + dbName;

	private Connection conn = null;
	private Statement st = null;
	private ResultSet rs = null;

	public static void main(String[] args) {
		Properties props = System.getProperties();
		String extdir = props.getProperty("java.ext.dirs");
		extdir = extdir + File.pathSeparator + "lib\\derby.jar";
		
		while (true) {
			System.out.println("What do you want to do?");
			System.out.println("1.Create Data");
			System.out.println("2.Delete Data");
			System.out.println("3.Update Data");
			System.out.println("4.Retrieve Data");
			System.out.println("5.Display All Data");
			System.out.println("6.Exit");
			Scanner scanner = new Scanner(System.in);
			int selected = scanner.nextInt();

			DoubleBall doubleBall = new DoubleBall();
			if (selected == 1) {
				doubleBall.CreateData();
			} else if (selected == 2) {
				doubleBall.DeleteData();
			} else if (selected == 3) {
				doubleBall.UpdateData();
			} else if (selected == 4) {
				doubleBall.RetriveData();
			} else if (selected == 5) {
				doubleBall.DisplayAll();
			} else {
				System.exit(selected);
			}
		}
	}

	private void getConn() throws Exception {
		Class.forName(driver);
		conn = DriverManager.getConnection(dbURL);
		st = conn.createStatement();
	}

	private void closeConn() throws Exception {
		if (rs != null) {
			rs.close();
		}
		st.close();
		conn.close();
	}

	public void DisplayAll() {
		try {
			getConn();
			rs = st.executeQuery("select * from DATA");
			DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
			df.applyPattern("00");
			while (rs.next()) {
				int id = rs.getInt(1);
				int red_1 = rs.getInt(2);
				int red_2 = rs.getInt(3);
				int red_3 = rs.getInt(4);
				int red_4 = rs.getInt(5);
				int red_5 = rs.getInt(6);
				int red_6 = rs.getInt(7);
				int blue = rs.getInt(8);

				System.out.println(id + " " + df.format(red_1) + " "
						+ df.format(red_2) + " " + df.format(red_3) + " "
						+ df.format(red_4) + " " + df.format(red_5) + " "
						+ df.format(red_6) + " " + df.format(blue));

			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				closeConn();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public void CreateData() {
		System.out
				.println("Please input the data like this:2009024 01 03 17 23 30 33 12");
		Scanner scanner = new Scanner(System.in);
		String[] temp = scanner.nextLine().split(" ");

		try {
			getConn();
			st.executeUpdate("insert into DATA values(" + temp[0] + ","
					+ temp[1] + "," + temp[2] + "," + temp[3] + "," + temp[4]
					+ "," + temp[5] + "," + temp[6] + "," + temp[7] + ")");
			System.out.println("Input Successful!");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				closeConn();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public void RetriveData() {
		System.out.println("Please input the number,like this:05 07");
		Scanner scanner = new Scanner(System.in);
		String[] temp = scanner.nextLine().split(" ");
		try {
			getConn();
			rs = st.executeQuery("select * from DATA");
			DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
			df.applyPattern("00");
			int count = 0;
			System.out.println("======================================");
			while (rs.next()) {
				int[] balls = new int[7];
				int id = rs.getInt(1);
				for (int i = 0; i < 7; i++) {
					balls[i] = rs.getInt(i + 2);
				}

				String data = df.format(balls[0]) + " " + df.format(balls[1])
						+ " " + df.format(balls[2]) + " " + df.format(balls[3])
						+ " " + df.format(balls[4]) + " " + df.format(balls[5]);

				String regex = "";
				for (String s : temp) {
					regex = regex + ".*" + s;
				}
				regex = regex + ".*";

				if (data.matches(regex)) {
					count++;
					System.out.println(id + " " + df.format(balls[0]) + " "
							+ df.format(balls[1]) + " " + df.format(balls[2])
							+ " " + df.format(balls[3]) + " "
							+ df.format(balls[4]) + " " + df.format(balls[5])
							+ " " + df.format(balls[6]));
				}
			}
			System.out.println("======================================");
			System.out.println("From 20030101 to now: It comes " + count+" times!");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				closeConn();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public void UpdateData() {
		System.out
				.println("Please input the data ID which you want to update,like this:2009024 01 03 17 23 30 33 12");
		Scanner scanner = new Scanner(System.in);
		String[] temp = scanner.nextLine().split(" ");

		try {
			getConn();
			st.executeUpdate("update DATA set RED_1=" + temp[1] + ",RED_2="
					+ temp[2] + ",RED_3=" + temp[3] + ",RED_4=" + temp[4]
					+ ",RED_5=" + temp[5] + ",RED_6=" + temp[6] + ",BLUE="
					+ temp[7] + " where ID=" + temp[0]);
			System.out.println("Update Successful!");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				closeConn();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public void DeleteData() {
		System.out
				.println("Please input the data ID which you want to detete,like this:2009024");
		Scanner scanner = new Scanner(System.in);
		String temp = scanner.nextLine();
		try {
			getConn();
			st.executeUpdate("delete from DATA where ID=" + temp);
			System.out.println("Delete Successful!");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				closeConn();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}


3
0
分享到:
评论
5 楼 Chameleon 2009-03-10  
重在算法,不在API啦。如果用会几个API来评价高手的话,那大家都去背API文档好了。
4 楼 jythoner 2009-03-10  
aben6448 写道

一段时间不能上网,回来竟发现每日一题不再每日了。。。加油,期待更好的东西出来~~~

有空msn聊,呵呵
3 楼 aben6448 2009-03-10  
一段时间不能上网,回来竟发现每日一题不再每日了。。。
加油,期待更好的东西出来~~~
2 楼 jythoner 2009-03-10  
SoftGiant 写道

楼主冲动了,要淡定 
楼主的初衷是高尚的,这些题目虽然简单了点,但是对于初学者的编程思路养成还是有一定帮助的,有基础的做做也挺好的,围棋职业高手每天还都要做一些死活题练手呢。

呵呵,多谢支持,我再换换思路,弄些更有意思的东西出来搞。
每日一题系列虽然总结了,但blog仍在,思想仍在,哈哈

1 楼 SoftGiant 2009-03-10  
楼主冲动了,要淡定 
楼主的初衷是高尚的,这些题目虽然简单了点,但是对于初学者的编程思路养成还是有一定帮助的,有基础的做做也挺好的,围棋职业高手每天还都要做一些死活题练手呢。

相关推荐

    Java方向每日一题day17_11月24日编程题答案1

    "Java方向每日一题day17_11月24日编程题答案1" 在本题中,我们需要解决一个火车进站的问题,给定n辆火车的编号,要求计算出所有可能的出站顺序。该问题可以使用栈来解决,因为栈的出栈顺序满足后进先出(Last In ...

    Java方向每日一题day18_11月25日选择题答案1

    Java是一种面向对象的编程语言,其核心特性之一就是封装,这是OOP(面向对象编程)的三大特性之一,另外两个是继承和多态。封装的主要目的是保护数据的安全性,通过限制对类内部成员的直接访问,防止外部代码随意...

    达内java课件+经典案例详解+测试题(PPT)

    最后,"每日一测"可能是针对每天学习内容的小测验,旨在检验学习效果: 1. **选择题**:测试对关键概念的理解,如类与对象的区别、异常处理的流程等。 2. **填空题**:检查语法掌握程度,如正确使用关键字、完成...

    java面试趣味题目(含答案)

    ### Java面试趣味题目解析 #### 第一组题目解析 **1. 如何利用烧绳方法计时一个小时十五分钟?** 解答:对于这个问题,首先要明白一根不均匀的绳子从头燃烧到尾需要一个小时的时间。要实现计时一个小时十五分钟,...

    猴子选大王

    一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

    java It项目管理

    “之前参考答案.rar”这个文件名可能包含了一些关于项目管理的练习题解答,它可能是项目管理考试或培训的一部分。这类资料可以帮助你理解项目管理的实际应用,比如如何处理特定的项目问题,或者如何制定有效的决策。...

    经典面试题(servletjs逻辑题).pdf

    8. **面试逻辑题**:Java笔试中可能出现逻辑题目,考察编程思维和问题解决能力,这在实际工作中同样重要。 学习Servlet和JSP的这些知识点,不仅能够帮助你解答面试中的技术问题,还能提升你在实际项目中的开发效率...

    初级java笔试题-VlPetrov:基于内在时间和比例法则的风险管理工具

    初级java笔试题基于标度定律和方向变化内在时间的风险管理工具 这个公共 GitHub 存储库是作为欧洲研究计划的一部分准备的,这是一个 H2020 Marie Sklodowska-Curie 创新培训网络“金融研究和风险管理中的大数据培训...

    每日十道面试题(七)

    首先,`@SpringBootConfiguration`表明这个类是一个配置类,它相当于Java配置的`@Configuration`,允许我们在类中定义`@Bean`方法,将这些bean添加到Spring的IoC(Inversion of Control)容器中。 接着,`@...

    Java_Algorithm:1个1일1

    最后,对于“1个1일1”的实践理念,这意味着系统地每天学习和练习一个算法题,可以是LeetCode、HackerRank或Codeforces上的题目。通过这种方式,可以逐步提高解决问题的能力,理解和掌握各种算法的适用场景。 总的...

    android_CK

    为了增加趣味性和挑战性,"android_CK"可能还具备一些特色功能,比如每日一题、排行榜、成就系统等。这些功能需要通过后台服务进行支持,可能涉及到数据同步、用户认证、积分系统的设计等。 此外,为了保证软件的...

    [宫水三叶的刷题日记]:扫描线问题1

    【宫水三叶的刷题日记】:扫描线问题1主要关注的是如何解决与扫描线算法相关的编程问题,特别是LeetCode上的218题——天际线问题。...同时,遇到困难时,可以参与相关社群交流,如每日一题打卡QQ群,以获得帮助和支持。

    2019京东校招店铺运营-线下门店管理笔试题.docx

    在京东2019年的校园招聘中,店铺运营线下门店管理笔试题主要涵盖了店长、副店长的职责,门店员工招聘的面试技巧,店铺运营规范的月度工作流程,日常店铺巡查的重点,每日早会内容,门店会议体系,销售管理和数据分析...

    [宫水三叶的刷题日记]:树状数组1

    《宫水三叶的刷题日记》中的第一篇专注于“树状数组”,这是一个在算法学习中常见的数据结构,尤其在处理区间和与动态...在遇到困难时,还可以加入相关社区进行交流,如每日一题打卡QQ群,与其他学习者一起探讨和进步。

    leetcode题库-DataStructureAndAlgorithms-365Days::man_technologist:请允许我用翻译腔描述这个仓库:真是见鬼,其实

    leetcode题库 题目来源: LeetCode 运行环境: Java 软件环境: VSCode 初衷: 记录自己的解题过程和...当成最后一天来活 如果没有明天 一切似乎简单了不少 人所有的痛苦 纠结 就是因为还有无数个明天 ----《我是余欢水》

    计算机专业课复习时间安排,机试面试1

    建议的每日时间分配为:早上3小时用于数学,下午2小时学习英语,接着2小时专攻专业课,晚上则投入2.5小时复习政治。总计每天学习约10小时,并确保在晚上9点左右结束,避免过度疲劳。休息日应设在非周末,以防止形成...

    每日编码问题:每日编码问题的解决方案

    DCP是一种学习工具,它每天会提供一个编程挑战,涉及的范围广泛,包括但不限于Python、Go(Golang)、Java等主流编程语言。这些题目通常涵盖算法设计、数据结构优化、面试常见问题以及编码实践等多个方面。通过解决...

    软件测试面试题.pdf

    - **敏捷实践**:遵循敏捷原则,如每日站会,以保持团队的同步。 ### 新技术和新测试方法的学习 **保持学习的方法** 为了跟上新技术和新测试方法的发展,可以采取以下措施: - **在线课程**:参加相关的在线课程...

    ssm英语单词学习网站.pptx

    SSM框架是现代Java Web开发中常用的一个集成框架,由Spring、SpringMVC和MyBatis三个组件组成。Spring作为一个轻量级的IoC(Inversion of Control,反转控制)框架,提供了面向切面编程(AOP)的能力,使得开发者...

Global site tag (gtag.js) - Google Analytics