經典java程序
本文精選部分經典演算法題,旨在幫助開發者提升解決問題的能力。以下是25道經典Java演算法題及參考答案。
程序1:兔子問題
描述:假設一對兔子從第3個月開始每月生一對兔子,新生的兔子又在第3個月生下一對兔子,求每個月的兔子總數。
代碼實現略
程序2:素數統計
描述:統計101-200之間的素數數量,並輸出所有素數。
代碼實現略
程序3:水仙花數列印
描述:列印所有三位數中,其各位數字的立方和等於該數本身的數字。
代碼實現略
程序4:質因數分解
描述:輸入一個正整數,輸出其所有質因數。
代碼實現略
程序5:成績等級轉換
描述:使用條件運算符嵌套,將成績等級轉換為'A'、'B'、'C'。
代碼實現略
程序6:最大公約數和最小公倍數
描述:輸入兩個整數,計算並輸出它們的最大公約數和最小公倍數。
代碼實現略
程序7:統計字元類型
描述:輸入一行字元,統計其中英文字母、空格、數字和其他字元的數量。
代碼實現略
程序8:數字序列累加
描述:輸入兩個數字m和n,計算s=a+aa+aaa+...+aa(a重復n次)的值。
代碼實現略
程序9:完數查找
描述:找出1000以內的所有完數。
代碼實現略
程序10:球落反彈
描述:球從100米高度自由落下,每次落地後反跳回原高度的一半,求第10次落地時經過的總米數和第10次反彈的高度。
代碼實現略
程序11:三位數組合計數
描述:使用4個數字1、2、3、4,能組成多少個互不相同且無重復數字的三位數?並輸出這些數。
代碼實現略
程序12:獎金計算
描述:根據利潤計算獎金,利潤不同,獎金計算規則也不同。
代碼實現略
程序13:尋找特殊整數
描述:尋找一個整數,使得它加上100後是一個完全平方數,再加上168後又是完全平方數。
代碼實現略
程序14:判斷特定日期
描述:輸入年、月、日,判斷這一天是這一年的第幾天。
代碼實現略
程序15:按升序輸出三數
描述:輸入三個整數x、y、z,將這三個數按從小到大的順序輸出。
代碼實現略
程序16:列印9*9乘法表
描述:輸出9*9乘法表。
代碼實現略
程序17:猴子吃桃問題
描述:猴子吃桃問題,通過循環計算求解。
代碼實現略
程序18:隊伍排序問題
描述:通過循環和嵌套循環進行隊伍排序。
代碼實現略
程序19:列印菱形圖案
描述:通過循環列印菱形圖案。
代碼實現略
程序20:分數序列求和
描述:計算特定分數序列的前20項之和。
代碼實現略
程序21:求1到20的階乘和
描述:求1到20的階乘之和。
代碼實現略
程序22:遞歸計算階乘
描述:遞歸方法計算5的階乘。
代碼實現略
程序23:年齡推算
描述:通過循環計算五個人的年齡。
代碼實現略
程序24:輸入整數計數和逆序列印
描述:輸入不多於5位的正整數,計算其位數並逆序列印各位數字。
代碼實現略
程序25:判斷迴文數
描述:判斷一個5位數是否為迴文數。
代碼實現略
㈡ 求一個簡單又經典的Java與資料庫例子,要有源代碼哦!
//下面的是連接mysql的例子
package com.song.struts.mySql;
import javax.swing.JComponent;
import java.sql.*;
import java.util.*;
// import com.borland.dx.sql.dataset.*;
public class mySqlDao extends JComponent {
private String UserName="root";
private String PWD="root";
private String url;
private Connection cn;
private Statement stmt;
private ResultSet rs = null;
public mySqlDao(){
try {
Class.forName("org.gjt.mm.mysql.Driver");
}
catch(java.lang.ClassNotFoundException e){
System.err.println("mydb() org.gjt.mm.mysql.Driver: " + e.getMessage());
}
catch(Exception e) {
e.printStackTrace();
}
}
//////////////////////////////
///返回mysql 連接,connection
/////////////////////////////
public Connection Connect(String dbname,String ip){
try{
String hostip=ip;
Properties myP = new Properties();
myP.setProperty("useUnicode","true");
myP.setProperty("characterEncoding","GB2312");
url="jdbc:mysql://"+hostip+":3306/"+dbname+"?user="+UserName+"&password="+PWD+"";
if(cn!=null){
cn.close();
}
cn=DriverManager.getConnection(url,myP);
stmt= cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
System.out.println("db connect success");
return cn;
}
catch(Exception e){
System.err.println("db connect err"+e.getMessage());
return null;
}
}
//////////////////////////////////
///關閉連接
/////////////////////////////////
public void close(){
try{
if(stmt!=null){
stmt.close();
}
if(cn!=null){
cn.close();
}
System.err.println("db colse success");
}
catch(Exception e){
System.err.println("db close err"+e.getMessage());
}
}
/////////////////////////////////////////////
// 用於進行記錄的查詢操�?,用於select 語句�?
//參數:sql語句�?
//返回:ResultSet對象
///////////////////////////////////////////
public ResultSet executeSelect(String sql) {
try {
stmt=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sql);
return rs;
}
catch(SQLException ex) {
System.err.println("db.executeQuery: " + ex.getMessage());
return null;
}
}
//////////////////////////////////////////////
//用於進行add或�?�update,insert,del等的記錄的操�?,
//入口參數:sql語句
//返回 :true,false
//////////////////////////////////////////////
public boolean executeUpdate(String sql) {
boolean bupdate=false;
try{
stmt=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
int rowCount = stmt.executeUpdate(sql);
if (rowCount!=0)
bupdate=true;
}
catch(SQLException ex) {
System.err.println("db.executeUpdate: " + ex.getMessage());
}
return bupdate;
}
//////////////////////////////////////////////
//用於進行表結構的操作,creat drop,modify等�??
//入口參數:sql語句
//返回 :true,false
//////////////////////////////////////////////
public boolean executeTable(String sql) {
boolean bupdate=false;
try {
stmt= cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
System.out.print("對表的操作的sqlis :||"+sql+"||");
stmt.executeUpdate(sql);
bupdate=true;
}
catch(SQLException ex) {
System.err.println("db.executeTable: "+ex.getMessage());
}
return bupdate;
}
//////////////////////////
//返回資料庫的信息
//////////////////////////
public Statement getLWPAIDStatement(){
try{
return cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(java.sql.SQLException e){
System.err.println("getAISPStatement():"+e.getMessage());
return null;
}
}
public DatabaseMetaData getLWPAIDMetaData(){
try{
return cn.getMetaData();
}
catch(java.sql.SQLException e){
System.err.println("getAISPMetaData():"+e.getMessage());
return null;
}
}
public static void main(String args[]){
mySqlDao a=new mySqlDao();
a.Connect("mydb", "localhost");
int b=-100;
ResultSet rs=a.executeSelect("select max(bill_id) from t_bill limit 1");
try{
while(rs.next()){
System.out.println("is in");
b=rs.getInt(1);
}
}catch(Exception e){
e.printStackTrace();
}
System.out.println(b);
// java.util.Date date=new java.util.Date();
// System.out.println(date.toString());
// a.executeTable("insert into t_user values(100,'123','1345')");
// a.executeTable("update t_user set insert_date='"+date.toString()+"' where user_id=100");
a.close();
System.out.print(new pub().asc2unicode("�?!"));
}
}
㈢ Java語言能做什麼應用范圍是
1. Android應用
如果你還在尋找Java在哪運用,你不用東奔西走的尋找,你的身邊就是。打開的 Android 手機,隨便打開一個 App 應用,他們就是完全的用 Java 語言,從 Google 上搜索 Android 的 API 文檔,你就會發現它和 Java 的 JDK 文檔驚人的相似。從兩年前的 Android 剛剛起步,到今天許多的 Android 應用都是 Java 程序員開發者開發。雖然 Android 運用了不同的 JVM 以及不同的封裝方式,但是代碼還是用 Java 語言所編寫。
2. 在金融業應用的伺服器程序
Java 在金融服務業的應用非常廣泛,許多跨國投資銀行例如:Goldman Sachs(高盛投資),Citigroup(花旗集團),Barclays(巴克萊銀行),Standard Charted(標准渣打銀行)以及其他銀行,都用 Java 來編寫前台和後台的電子交易系統,結算和確認系統,數據處理項目以及其他項目。大多數情況下,Java 被用在伺服器端開發,但多數沒有任何前端,它們通常是從一個伺服器(上一級)接收數據,處理後發向另一個處理系統(下一級處理)。Java Swing 技術旨在開發可視化界面客戶端供交易者使用,但是隨著近幾年 C# 的崛起使程序員在客戶端開發時舍棄了繁瑣的代碼,C# 正慢慢取代 Swing 成為可視化開發的主流。
3. 網站
同樣,Java 在電子商務領域以及網站開發領域占據這大部分席位。你可以運用許多不同的框架來創建web項目,SpringMVC,Struts2.0 以及 frameworks。即使是簡單的 servlet,jsp 和以 struts 為基礎的網站在政府項目中也是很受歡迎的。例如醫療救護,保險,教育,國防以及其他的不同部門網站都是以 Java 為基礎來開發的。
4. 軟體工具
許多常用的軟體和開發工具都是運用Java來編寫和開發的。比如 Eclipse,IneteliJIdea 和 Netbans IDE。我認為他們去都是用 Java 來編寫的。就如上面所說,Swing 曾經在可視化桌面客戶端開發非常流行,它們大多數應用與金融服務領域以及投資銀行,JavaFx 雖說已經得到流行,但是依然無法取代 Swing。現在 C# 已經幾乎取代了 Swing 在金融開發領域的地位。
5. 交易系統
第三方交易系統,現已是金融服務產業的一個很大的部分,它們同樣也是 Java 編寫。例如受歡迎的交易平台 Murex ,它也是 Java 編寫,並與許多的銀行前台所連接,提供服務。
6. J2ME系統
隨著近幾年 IOS 和 Android 的出現,幾乎占據了 J2ME 市場,但仍然有低端諾基亞、三星手機使用J2ME。這個時代的大多數手機游戲,手機應用都採用 J2ME 的一部分 MIDP 和 CLDC 編寫,以適應 Android 系統。但是 J2ME 依然在藍光,磁卡,機頂盒這些產品中流行。通信應用之所以這么火是因為 Nokia 的手機依舊支持J2ME。
7. 嵌入式領域
Java 在嵌入式領域發展空間很大。在這個平台上,你只需130KB就能夠使用 Java 技術(在智能卡或者感測器上)。最初,Java 被設計用來在嵌入書設備上工作。事實上,這只是其中的一個領域,這只是當初的「一次寫入,隨便暢游」的項目,現在看起來是這樣了。
8. 大數據技術
Hadoop 以及其他大數據處理技術都是用 Java 或者其他,例如 Apache 的基於 Java 的 HBase 和Accumulo 以及 ElasticSearchas。但是 Java 在此領域並未占太大空間,如 MongoDB 就是在 C++ 技術基礎上編寫的。總的來說,只要 Hadoop 和 ElasticSearchas 能夠成長壯大,Java 依舊還有潛力去在這個市場占據一部分。
9. 高頻交易的空間
Java 平台大幅度提高了這個平台的特性和即使編譯,他同時也能夠像 C++ 一樣傳遞數據。正是由於這個原因,Java 成為的程序員編寫交易平台的語言,因為雖然性能不比母語,但你可以避開它的安全性,可移植性和可維護性,以更快的速度運行,一個沒有經驗的 C++ 程序員會使應用程序變的更加緩慢和不可靠。
10. 科學應用
今天,Java 依然是在科學應用中最好選擇,包括自然語言處理。最主要的原因是因為 Java 比 C++ 或者其他語言相對其安全性、便攜性、可維護性以及其他高級語言的並發性更好。
㈣ java經典編程案例有哪些
java編程的記事本:
import java.util.*;
public class JieChengExample
{
public static void main(String args[])
{
Scanner input=new Scanner(System.in);
int n,sum;
Jiecheng jie=new Jiecheng();
System.out.print("輸入n的值:");//輸入有幾個階乘相加
n=input.nextInt();
sum=0;
for(int i=1;i<=n;i++)
{
sum=sum+jie.jiecheng(i);//這是n個階乘相加
}
System.out.println("1!+2!+3!+....+n!的和是:"+sum);
}
}
class Jiecheng
{
public int jiecheng(int temp)//算階乘的方法
{
int sum=1;
for(int i=1;i<=temp;i++)
{
sum=sum*i; //計算階乘
}
return sum;//將一個階乘返回
}
}
2.java賽馬游戲:
import java.util.Random;
public class Test {
public static void main(String[] args) {
Competition c = new Competition();
Thread T = new Thread(c);
T.start();
}
}
class Competition implements Runnable{
int red = 0;
int green = 0;
int Speed [] = new int [2];
Competition(){
}
public void run(){
Random r = new Random();
for(int a= 0;a<500;a++){
for(int j = 0;j<2;j++){
Speed[j] = r.nextInt(2);
red = red + Speed[j];
Speed[j] = r.nextInt(2);
green = green + Speed[j];
}
System.out.println("red的速度為"+red);
System.out.println("green的速度為"+green);
while(red >=500 || green>=500){
if(red >=500){
System.out.println("red先抵達終點線");
}
if(green >= 500){
System.out.println("green先抵達終點線");
}
if(green ==500 && red ==500 ){
System.out.println("兩個同時到達");
}
return;
}
}
/* if(red >green){
System.out.println("Redwin"+red);
}
if(red<green){
S...import java.util.Random;
public class Test {
public static void main(String[] args) {
Competition c = new Competition();
Thread T = new Thread(c);
T.start();
}
}
class Competition implements Runnable{
int red = 0;
int green = 0;
int Speed [] = new int [2];
Competition(){
}
public void run(){
Random r = new Random();
for(int a= 0;a<500;a++){
for(int j = 0;j<2;j++){
Speed[j] = r.nextInt(2);
red = red + Speed[j];
Speed[j] = r.nextInt(2);
green = green + Speed[j];
}
System.out.println("red的速度為"+red);
System.out.println("green的速度為"+green);
while(red >=500 || green>=500){
if(red >=500){
System.out.println("red先抵達終點線");
}
if(green >= 500){
System.out.println("green先抵達終點線");
}
if(green ==500 && red ==500 ){
System.out.println("兩個同時到達");
}
return;
}
}
/* if(red >green){
System.out.println("Redwin"+red);
}
if(red<green){
System.out.println("Greenwin"+green);
}
if(red == green){
System.out.println("equal");*/
JAVA的介紹:

Java是一種可以撰寫跨平台應用程序的面向對象的程序設計語言。Java技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。
㈤ 使用Java實現Comet風格的Web應用(一)
開始
在本文中 我將展示如何使用各種不同的 Java 技術構建一些簡單的 Comet 風格的 Web 應用程序 讀者對 Java Servlet Ajax 和 JavaScript 應該有一定的了解 我們將考察 Tomcat 和 Jetty 中一些支持 Comet 的特性 因此需要使用這兩個產品的最新版本 本文使用 Tomcat 和 Jetty 另外還需要一個支持 Java 或更高版本的 JDK 本文使用 JDK 此外還需要看看 Jetty 的預發布版 因為它實現了 Servlet 規范 我們將在本文中研究該規范
理解 Comet
您可能已經聽說過 Comet 因為它最近受到了一定的關注 Comet 有時也稱反向 Ajax 或伺服器端推技術(server side push) 其思想很簡單 將數據直接從伺服器推到瀏覽器 而不必等到瀏覽器請求數據 聽起來簡單 但是如果熟悉 Web 應用程序 尤其是 HTTP 協議 那麼您就會知道 這絕不簡單 實現 Comet 風格的 Web 應用程序 同時保證在瀏覽器和伺服器上的可伸縮性 這只是在最近幾年才成為可能 在本文的後面 我們將看看一些流行的 Java Web 伺服器如何支持可伸縮的 Comet 架構 但首先我們來看看為什麼要創建 Comet 應用程序 以及用於實現它們的常見設計模式
使用 Comet 的動機
HTTP 協議的成功毋庸置疑 它是 Internet 上大部分信息交換的基礎 然而 它也有一些局限性 特別是 它是無狀態 單向的協議 請求被發送到 Web 伺服器 伺服器處理請求並發回一個響應 — 僅此而已 請求必須由客戶機發出 而伺服器則只能在對請求的響應中發送數據 這至少會影響很多類型的 Web 應用程序的實用性 典型的例子就是聊天程序 另外還有一些例子 例如比賽的比分 股票行情或電子郵件程序
HTTP 的這些局限性也是它取得一定成功的原因 請求/響應周期使它成為了經典的模型 即每個連接使用一個線程 只要能夠快速為請求提供服務 這種方法就有巨大的可伸縮性 每秒鍾可以處理大量的請求 只需使用少量的伺服器就可以處理很大數量的用戶 對於很多經典的 Web 應用程序 例如內容管理系統 搜索應用程序和電子商務站點等等而言 這非常適合 在以上任何一種 Web 應用程序中 伺服器提供用戶請求的數據 然後關閉連接 並釋放那個線程 使之可以為其他請求服務 如果提供初始數據之後仍可能存在交互 那麼將連接保持為打開狀態 因此線程就不能釋放出來 伺服器也就不能為很多用戶服務
但是 如果想在對請求做出響應並發送初始數據之後 仍然保持與用戶的交互呢?在 Web 早期 這一點常使用 meta 刷新實現 這將自動指示瀏覽器在指定秒數之後重新裝載頁面 從而支持簡陋的輪詢(polling) 這不僅是一種糟糕的用戶體驗 而且通常效率非常低下 如果沒有新的數據要顯示在頁面上呢?這時不得不重新呈現同樣的頁面 如果對頁面的更改很少 並且頁面的大部分沒有變化呢?同樣 不管是否有必要 都得重新請求和獲取頁面上的一切內容
Ajax 的發明和流行改變了上述狀況 現在 伺服器可以非同步通信 因此不必重新請求整個頁面 現在可以進行增量式的更新 只需使用 XMLHttpRequest 輪詢伺服器 這項技術通常被稱作 Comet 這項技術存在一些變體 每種變體具有不同的性能和可伸縮性 我們來看看這些不同風格的 Comet
Comet 風格
Ajax 的出現使 Comet 成為可能 HTTP 的單向性質可以有效地加以規避 實際上有一些不同的方法可以繞過這一點 您可能已經猜到 支持 Comet 的最容易的方式是輪詢(poll) 使用 XMLHttpRequest 向伺服器發出調用 返回後 等待一段固定的時間(通常使用 JavaScript 的 setTimeout 函數) 然後再次調用 這是一項非常常見的技術 例如 大多數 webmail 應用程序就是通過這種技術在電子郵件到達時顯示電子郵件的
這項技術有優點也有缺點 在這種情況下 您期望快速返回響應 就像任何其他 Ajax 請求一樣 在請求之間必須有一段暫停 否則 連續不斷的請求會沖垮伺服器 並且這種情況下顯然不具有可伸縮性 這段暫停使應用程序產生一個延時 暫停的時間越長 伺服器上的新數據就需要越多的時間才能到達客戶機 如果縮短暫停時間 又將重新面臨沖垮伺服器的風險 但是另一方面 這顯然是最簡單的實現 Comet 的方式
現在應該指出 很多人認為輪詢並不屬於 Comet 相反 他們認為 Comet 是對輪詢的局限性的一個解決方案 最常見的 真正的 Comet 技術是輪詢的一種變體 即長輪詢(long polling) 輪詢與長輪詢之間的主要區別在於伺服器花多長的時間作出響應 長輪詢通常將連接保持一段較長的時間 — 通常是數秒鍾 但是也可能是一分鍾甚至更長 當伺服器上發生某個事件時 響應被發送並隨即關閉 輪詢立即重新開始
長輪詢相對於一般輪詢的優點在於 數據一旦可用 便立即從伺服器發送到客戶機 請求可能等待較長的時間 期間沒有任何數據返回 但是一旦有了新的數據 它將立即被發送到客戶機 因此沒有延時 如果您使用過基於 Web 的聊天程序 或者聲稱 實時 的任何程序 那麼它很可能就是使用了這種技術
長輪詢有一種變體 這是第三種風格的 Comet 這通常被稱為流(streaming) 按照這種風格 伺服器將數據推回客戶機 但是不關閉連接 連接將一直保持開啟 直到過期 並導致重新發出請求 XMLHttpRequest 規范表明 可以檢查 readyState 的值是否為 或 Receiving(而不是 或 Loaded) 並獲取正從伺服器 流出 的數據 和長輪詢一樣 這種方式也沒有延時 當伺服器上的數據就緒時 該數據被發送到客戶機 這種方式的另一個優點是可以大大減少發送到伺服器的請求 從而避免了與設置伺服器連接相關的開銷和延時 不幸的是 XMLHttpRequest 在不同的瀏覽器中有很多不同的實現 這項技術只能在較新版本的 Mozilla Firefox 中可靠地使用 對於 Internet Explorer 或 Safari 仍需使用長輪詢
至此 您可能會想 長輪詢和流都有一個很大的問題 請求需要在伺服器上存在一段較長的時間 這打破了每個請求使用一個線程的模型 因為用於一個請求的線程一直沒有被釋放 更糟糕的是 除非要發回數據 否則該線程一直處於空閑狀態 這顯然不具有可伸縮性 幸運的是 現代 Java Web 伺服器有很多方式可以解決這個問題
Java 中的 Comet
現在有很多 Web 伺服器是用 Java 構建的 一個原因是 Java 有一個豐富的本地線程模型 因此實現典型的每個連接一個線程的模型便非常簡單 該模型對於 Comet 不大適用 但是 Java 對此同樣有解決的辦法 為了有效地處理 Comet 需要非阻塞 IO Java 通過它的 NIO 庫提供非阻塞 IO 兩種最流行的開源伺服器 Apache Tomcat 和 Jetty 都利用 NIO 增加非阻塞 IO 從而支持 Comet 然而 這兩種伺服器中的實現卻各不相同 我們來看看 Tomcat 和 Jetty 對 Comet 的支持
Tomcat 和 Comet
對於 Apache Tomcat 要使用 Comet 主要需要做兩件事 首先 需要對 Tomcat 的配置文件 server XML 稍作修改 默認情況下啟用的是更典型的同步 IO 連接器 現在只需將它切換成非同步版本 如清單 所示
清單 修改 Tomcat 的 server xml <! ThisistheusualConnector mentitoutandaddtheNIOone ><! ConnectorURIEncoding= utf connectionTimeout= port= protocol= HTTP/ redirectPort= / ><ConnectorconnectionTimeout= port= protocol= apache coyote redirectPort= />
Servlet 這顯然是 Tomcat 特有的一個介面 清單 顯示了一個這樣的例子
lishixin/Article/program/Java/hx/201311/26770
㈥ 求java經典小程序代碼
代碼如下:
public class HelloWorld {
public static void main(String []args) {
int a = 3, b = 7 ;
System.out.println("Hello World!");
}
public static int f(int a, int b){
return a*a + a*b + b*b;
}
}
結果如下:

