比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Luna > Info

Java程序設計期末復習習題與答案_CPU

Author:

Time:1900/1/1 0:00:00

習題1

1.Java語言的主要貢獻者是誰?

2.編寫、運行Java程序需要經過哪些主要步驟?

4.如果JDK的安裝目錄為D:\jdk,應當怎樣設置path的值?

5.下列哪個是JDK提供的編譯器?

A)java.exe

B)javac.exe

C)javap.exe

D)javaw.exe

6.Java源文件的擴展名是什么?Java字節碼的擴展名是什么?

7.下列哪個是Java應用程序主類中正確的main方法聲明?

A)publicvoidmain(Stringargs)

B)staticvoidmain(Stringargs)

C)publicstaticvoidMain(Stringargs)

D)publicstaticvoidmain(Stringargs)

習題2

1.模仿圖2.4簡單繪制出例子2中rectangle和lader對象的內存示意圖。

2.模仿例子2編寫含有3個類的Java應用程序,要求三個類分別在三個源文件中,其中一個源文件包含有名字為

Teacher的類,該類創建的對象調用add(doublea,doubleb)的方法可以得到2個數的和、調用sub(double

a,doubleb)的方法可以得到2個數的差;一個源文件包含有名字為Student的類,該類創建的對象調用speak()

的方法可以可以在命令行窗口輸出“老師好”;一個源文件包含名字為MainClass的主類。要求在主類的main方

法中分別用Teacher和Student類創建對象,使得程序能輸出12與236的和以及234與120的差,并輸出“老師好

”。

3.當源文件中有多個類時,請簡述源文件的命名規則。

4.當代碼量較大時應當使用哪種編程風格?

習題3

1.什么叫標識符?標識符的規則是什么?true是否可以作為標識符。

2.什么叫關鍵字?true和false是否是關鍵字?請說出6個關鍵字。

3.Java的基本數據類型都是什么?

4.上機運行下列程序,注意觀察輸出的結果。

publicclassE{

publicstaticvoidmain(Stringargs){

for(inti=20302;i<=20322;i++){

System.out.println((char)i);

}

5.上機調試下列程序,注意System.out.print()和System.out.println()的區別。

publicclassOutputData{

intx=234,y=432;

System.out.println(x+"<"+(2*x));

System.out.print("我輸出結果后不回車");

System.out.println("我輸出結果后自動回車到下一行");

System.out.println("x+y="+(x+y));

6.編寫一個Java應用程序,輸出全部的大寫英文字母。

7.是否可以將例子4中的

zhangSan.weight=reader.nextFloat();

更改為:

zhangSan.weight=reader.nexDouble();

習題4

1.下列程序的輸出結果是什么?if-else語句的書寫是否規范?

intx=10,y=5,z=100,result=0;

if(x>y)

x=z;

else

y=x;

z=y;

result=x+y+z;

System.out.println(result);

2.下列程序的輸出結果是什么?

charc='\0';

for(inti=1;i<=4;i++){

switch(i){

case1:c='新';

System.out.print(c);

case2:c='親';

break;

case3:c='斤';

default:System.out.print("!");

3.參考例子2,在應用程序中使用if-elseif-else多條件分支語句代替switch語句來判斷整數的中獎情況。

4.為了節約用電,將用戶的用電量分成3個區間,針對不同的區間給出不同的收費標準。對于1至90千瓦

的電量,每千瓦0.6元;對于91至150千瓦的電量,每千瓦1.1元;對于用大于151千瓦的電量,每千瓦1.7元。編

寫一個Java應用程序程序。在主類的main方法中,輸入用戶的用電量,程序輸出電費。

5.編寫一個應用程序,用兩個for循環語句分別輸出大寫和小寫的“字母表”。

6.一個數如果恰好等于它的因子之和,這個數就稱為“完數”。編寫一個應用程序求1000之內的所有完數。

7.編寫一個應用程序求滿足1+2!+3!…+n!<=9876的最大整數n。

習題5

1.類中的實例變量在什么時候會被分配內存空間?

2.什么叫方法的重載?構造方法可以重載嗎?

3.類中的實例方法可以操作類變量(static變量)嗎?類方法(static方法)可以操作實例變量嗎?

4.類中的實例方法可以用類名直接調用嗎?

5.簡述類變量和實例變量的區別。

6.下列哪些類聲明是錯誤的?

A)classA

B)publicclassA

C)protectedclassA

D)privateclassA

7.下列A類的類體中~哪些是錯誤的?

classTom{

privateintx=120;

protectedinty=20;

intz=11;

privatevoidf(){

x=200;

System.out.println(x);

voidg(){

publicclassA{

Tomtom=newTom();

tom.x=22;//

tom.y=33;//

tom.z=55;//

tom.f();//

tom.g();//

8.請說出A類中System.out.println的輸出結果。

classB

{intx=100,y=200;

publicvoidsetX(intx)

{x=x;

publicvoidsetY(inty)

{this.y=y;

publicintgetXYSum()

{returnx+y;

publicclassA

{publicstaticvoidmain(Stringargs)

{Bb=newB();

b.setX(-100);

b.setY(-200);

System.out.println("sum="+b.getXYSum());

9.請說出A類中System.out.println的輸出結果。

classB{

intn;

staticintsum=0;

voidsetN(intn){

this.n=n;

intgetSum(){

for(inti=1;i<=n;i++)

sum=sum+i;

returnsum;

Bb1=newB(),b2=newB();

b1.setN(3);

b2.setN(5);

ints1=b1.getSum();

ints2=b2.getSum();

System.out.println(s1+s2);

10.請說出E類中System.out.println的輸出結果。

classA{

doublef(intx,doubley){

returnx+y;

intf(intx,inty){

returnx*y;

Aa=newA();

System.out.println(a.f(10,10));

System.out.println(a.f(10,10.0));

習題6

1.子類將繼承父類的那些成員變量和方法?子類在什么情況下隱藏父類的成員變量和方法?

2.父類的final方法可以被子類重寫嗎?

3.什么類中可以有abstract方法?

4.什么叫對象的上轉型對象?

5.下列敘述哪些是正確的?

final類不可以有子類。

abstract類中只可以有abstract方法。

abstract類中可以有非abstract方法,但該方法不可以用final修飾。

不可以同時用final和abstract修飾一個方法。

6.請說出E類中System.out.println的輸出結果。

doublef(doublex,doubley){

classBextendsA{

doublef(intx,inty){

Bb=newB();

System.out.println(b.f(3,5));

System.out.println(b.f(3.0,5.0));

7.請說出E類中System.out.println的輸出結果。

staticintg(intn){

returnn*n;

doublem=super.f(x,y);

returnm+x*y;

intm=A.g(n);

returnm+n;

System.out.println(b.f(10.0,8.0));

System.out.println(b.g(3));

習題7

1.接口中能聲明變量嗎?

2.接口中能定義非抽象方法嗎?

3.什么叫接口的回調?

4.請說出E類中System.out.println的輸出結果。

interfaceA{

doublef(doublex,doubley);

classBimplementsA{

publicdoublef(doublex,doubley){

intg(inta,intb){

returna+b;

Aa=newB();

System.out.println(a.f(3,5));

Bb=(B)a;

Optimistic推出JavaScript中的合約模擬Smock v2:官方消息,以太坊二層擴容方案Optimistic Ethereum推出JavaScript中的合約模擬Smock v2,無需在Solidity中編寫模擬合約。據Optimistic介紹,智能合約測試歷來很困難或困惑,必須在Solidity中編寫測試代碼;必須重新編譯測試合約才能改變測試;測試合約和目標合約共享相同的鏈狀態。而Smock v2具有以下功能:偽造任何合約;操作任何合約函數;對調用進行斷言;創建由真實合約支持的模擬;在模擬中操作變量等。[2021/8/12 1:50:38]

System.out.println(b.g(3,5));

5.請說出E類中System.out.println的輸出結果。

interfaceCom{

intadd(inta,intb);

abstractclassA{

abstractintadd(inta,intb);

classBextendsAimplementsCom{

publicintadd(inta,intb){

Comcom=b;

System.out.println(com.add(12,6));

Aa=b;

System.out.println(a.add(10,5));

習題8

1.內部類的外嵌類的成員變量在內部類中仍然有效嗎?

2.內部類中的方法也可以調用外嵌類中的方法嗎?

3.內部類的類體中可以聲明類變量和類方法嗎?

4.請說出下列程序的輸出結果。

classCry{

publicvoidcry(){

System.out.println("大家好");

Cryhello=newCry(){

publicvoidcry(){

System.out.println("大家好,祝工作順利!");

};

hello.cry();

習題9

1.下列敘述哪些是正確的?

String類是final類,不可以有子類。

String類在java.lang包中。

"abc"=="abc"的值是false.

"abc".equals("abc")的值是true

2.請說出E類中System.out.println的輸出結果。

importjava.util.*;

classGetToken{

Strings;

publicStringgetToken(intindex,Stringstr){

StringTokenizerfenxi=newStringTokenizer(str);

intnumber=fenxi.countTokens();

s=newString;

intk=1;

while(fenxi.hasMoreTokens()){

Stringtemp=fenxi.nextToken();

s=temp;

k++;

if(index<=number)

returns;

returnnull;

classE{

Stringstr="WeLoveThisGame";

GetTokentoken=newGetToken();

Strings1=token.getToken(2,str),

s2=token.getToken(4,str);

System.out.println(s1+":"+s2);

3.請說出E類中System.out.println的輸出結果。

byted="abc我們喜歡籃球".getBytes();

System.out.println(d.length);

Strings=newString(d,0,7);

System.out.println(s);

classMyString{

publicStringgetString(Strings){

StringBufferstr=newStringBuffer();

for(inti=0;i<s.length();i++){

if(i%2==0){

charc=s.charAt(i);

str.append(c);

returnnewString(str);

Strings="1234567890";

MyStringms=newMyString();

System.out.println(ms.getString(s));

Stringregex="\\djava\\w{1,}";

Stringstr1="88javaookk";

Stringstr2="9javaHello";

if(str1.matches(regex)){

System.out.println(str1);

if(str2.matches(regex)){

System.out.println(str2);

6.字符串調用publicStringtoUpperCase()方法返回一個字符串,該字符串把當前字符串中的小寫字母變成大寫字母;.字符串調用publicStringtoLowerCase()方法返回一個字符串,該字符串把當前字符串中的大寫字母變成小寫字母。String類的publicStringconcat(Stringstr)方法返回一個字符串,該字符串是把調用該方法的字符串與參數指定的字符串連接。編寫一個程序,練習使用這3個方法。

7.String類的publiccharcharAt(intindex)方法可以得到當前字符串index位置上的一個字符。編寫程序使用該方法得到一個字符串中的第一個和最后一個字符。

8.通過鍵盤輸入年份和月份。程序輸出相應的日歷牌。

9.計算某年、某月、某日和某年、某月、某日之間的天數間隔。要求年、月、日通過通過鍵盤輸入到程序中。

10.編程練習Math類的常用方法。

11.參看例子19,編寫程序剔除一個字符串中的全部非數字字符,例如,將形如“ab123you”的非數字字符全部剔除,得到字符串“123”。

12.參看例子21,使用Scanner類的實例解析“數學87分,物理76分,英語96分”中的考試成績,并計算出總成績以及平均分數。

習題10

1.如果準備按字節讀取一個文件的內容,應當使用FileInputStream流還是FileReader流?

2.FileInputStream流的read方法和FileReader流的read方法有何不同?

3.BufferedReader流能直接指向一個文件嗎?

4.使用ObjectInputStream和ObjectOutputStream類有哪些注意事項?

5.怎樣使用輸入、輸出流克隆對象?

6.使用RandomAccessFile流將一個文本文件倒置讀出。

7.使用Java的輸入、輸出流將一個文本文件的內容按行讀出,每讀出一行就順序添加行號,并寫入到另

一個文件中。

8.了解打印流。我們已經學習了數據流,其特點是用Java的數據類型讀寫文件,但使用數據流寫成的文

件用其它文件閱讀器無法進行閱讀(看上去是亂碼)。PrintStream類提供了一個過濾輸出流,該輸出流能以文本

格式顯示Java的數據類型。上機實習下列程序:

importjava.awt.*;

importjava.io.*;

try{

Filefile=newFile("p.txt");

FileOutputStreamout=newFileOutputStream(file);

PrintStreamps=newPrintStream(out);

ps.print(12345.6789);

ps.println("howareyou");

ps.println(true);

ps.close();

catch(IOExceptione){}

9.參考例子14,解析一個文件中的價格數據,并計算平均價格,比如該文件的內容如下:

商品列表:

電視機,2567元/臺

洗衣機,3562元/臺

冰箱,6573元/臺

習題11

1.JFrame類的對象的默認布局是什么布局?

2.一個容器對象是否可以使用add方法添加一個JFrame窗口?

3.編寫應用程序,有一個標題為“計算”的窗口,窗口的布局為FlowLayout布局。窗口中添加兩個文本區,當

我們在一個文本區中輸入若干個數時,另一個文本區同時對你輸入的數進行求和運算并求出平均值,也就是說

隨著你輸入的變化,另一個文本區不斷地更新求和及平均值。

4.編寫一個應用程序,有一個標題為“計算”的窗口,窗口的布局為FlowLayout布局。設計四個按鈕,分別命

名為“加”、“差”、“積、”、“除”,另外,窗口中還有三個文本框。單擊相應的按鈕,將兩個文本框的

數字做運算,在第三個文本框中顯示結果。要求處理NumberFormatException異常。

5.參照例子13編寫一個體現MVC結構的GUI程序。首先編寫一個封裝梯形類,然后再編寫一個窗口。要求窗口使

用三文本框和一個文本區為梯形對象中的數據提供視圖,其中三個文本框用來顯示和更新梯形對象的上底、下

底和高;文本區對象用來顯示梯形的面積。窗口中有一個按鈕,用戶單擊該按鈕后,程序用3個文本框中的數據

分別作為梯形對象的上底、下底和高,并將計算出的梯形的面積顯示在文本區中。

習題12

1.線程有幾種狀態?

2.引起線程中斷的常見原因是什么?

3.一個線程執行完run方法后,進入了什么狀態?該線程還能再調用start方法嗎?

4.線程在什么狀態時,調用isAlive()方法返回的值是false。

5.建立線程有幾種方法?

6.怎樣設置線程的優先級?

7.在多線程中,為什么要引入同步機制?

8.在什么方法中wait()方法、notify()及notifyAll()方法可以被使用?

9.將例子11中SellTicket類中的循環條件:

while(fiveAmount<3)

該寫成:

if(fiveAmount<3)

是否合理。

10.線程調用interrupt()的作用是什么?

11.參照例子14,模擬三個人排隊買票,張某、李某和趙某買電影票,售票員只有三張五元的錢,電影票5元錢

一張。張某拿二十元一張的新人民幣排在李的前面買票,李某排在趙的前面拿一張10元的人民幣買票,趙某拿

一張5元的人民幣買票。

12.參照例子9,要求有3個線程:student1、student2和teacher,其中student1準備睡10分鐘后再開始上課

,其中student2準備睡一小時后再開始上課。teacher在輸出3句“上課”后,吵醒休眠的線程student1;

student1被吵醒后,負責再吵醒休眠的線程student2。

Herjavec創始人:比特幣被多數消費者接受 并非不可能達到10萬美元:網絡安全專家兼Herjavec集團創始人Robert Herjavec在最近一次采訪中表示,比特幣確實是大多數消費者接受的未來支付方式,比特幣不是不可能達到10萬美元。從長遠來看,消費者總是會圖方便,而比特幣就是方便。(AMBCrypto)[2020/2/29]

12.參照例子19,編寫一個Java應用程序,在主線程中再創建3個線程:“運貨司機”、“裝運工”和“倉庫管

理員”。要求線程“運貨司機”占有CPU資源后立刻聯合線程“裝運工”,也就是讓“運貨司機”一直等到“裝

運工”完成工作才能開車,而“裝運工”占有CPU資源后立刻聯合線程“倉庫管理員”,也就是讓“裝運工”

一直等到“倉庫管理員”打開倉庫才能開始搬運貨物。

14.在下列E類中,System.out.println的輸出結果是什么?

importjava.awt.event.*;

publicclassEimplementsRunnable{

StringBufferbuffer=newStringBuffer();

Threadt1,t2;

E(){

t1=newThread(this);

t2=newThread(this);

publicsynchronizedvoidaddChar(charc){

if(Thread.currentThread()==t1){

while(buffer.length()==0){

try{wait();

catch(Exceptione){}

buffer.append(c);

if(Thread.currentThread()==t2){

notifyAll();

publicstaticvoidmain(Strings){

Ehello=newE();

hello.t1.start();

hello.t2.start();

while(hello.t1.isAlive()||hello.t2.isAlive()){}

System.out.println(hello.buffer);

publicvoidrun(){

if(Thread.currentThread()==t1)

addChar('A');

if(Thread.currentThread()==t2)

addChar('B');

習題13

1.URL對象調用哪個方法可以返回一個指向該URL對象所包含的資源的輸入流。

2.什么叫socket?怎樣建立socket連接?

3.ServerSocket對象調用accept方法返回一個什么類型的對象?

4.InetAddress對象使用怎樣的格式來表示自己封裝的地址信息?

5.參照例子6,使用套接字連接編寫網絡程序,客戶輸入三角形的三邊并發送給服務器,服務器把計算出的三

角形的面積返回給客戶。

6.參照13.6.2節中的示例代碼,使用RMI技術讓客戶調用遠程對象讀取服務器上的一個文本文件。

習題14

1.為了操作Derby數據庫,需要把Java安裝目錄目錄db/lib下的那些jar文件復制到Java運行環境的擴展

中?

2.參照例子2,編寫一個應用程序來查詢Derby數據庫,用戶可以從鍵盤輸入數據庫名、表名。

3.使用預處理語句的好處是什么?

4.什么叫事務,事務處理步驟是怎樣的?

習題解答

習題一

1.JamesGosling

2.需3個步驟:

用文本編輯器編寫源文件。

使用javac編譯源文件,得到字節碼文件。

使用解釋器運行程序。

3.setclasspath=D:\jdk\jre\lib\rt.jar;.;

4.B

5.Java源文件的擴展名是.java,Java字節碼的擴展名是.class。

6.D。

習題二

Teacher.java

publicclassTeacher{

doubleadd(doublea,doubleb){

doublesub(doublea,doubleb){

returna-b;

Student.java

publicclassStudent{

publicvoidspeak(){

System.out.println("老師好");

MainClass.java

publicclassMainClass{

Teacherzhang=newTeacher();

System.out.println(zhang.add(12,236));

System.out.println(zhang.add(234,120));

Studentjiang=newStudent();

jiang.speak();

3.如果源文件中有多個類,但沒有public類,那么源文件的名字只要和某個類的名字相同,并且擴展名是.java就可以了,如果有一個類是public類,那么源文件的名字必須與這個類的名字完全相同,擴展名是.java。

4.行尾風格。

習題三

用來標識類名、變量名、方法名、類型名、數組名、文件名的有效字符序列稱為標識符。標識符由字母、下劃線、美元符號和數字組成,第一個字符不能是數字。true不是標識符。

關鍵字就是Java語言中已經被賦予特定意義的一些單詞,不可以把關鍵字作為名字來用。不是關鍵字。classimplementsinterfaceenumextendsabstract。

boolean,char,byte,short,int,long,float,double。

4.屬于操作題,解答略。

5

6.

charcStart='A',cEnd='Z';

for(charc=cStart;c<=cEnd;c++)

System.out.print(""+c);

7.不可以。

習題四

110。不規范。

.新親親斤!!。

publicclassJudgeAward{

voidgiveMess(intnumber){

if(number==9||number==131||number==12){

System.out.println(number+"是三等獎");

elseif(number==209||number==596||number==27){

System.out.println(number+"是二等獎");

elseif(number==875||number==316||number==59){

System.out.println(number+"是一等獎");

else{

System.out.println("未中獎");

importjava.util.Scanner;

publicclassComputer{

Scannerreader=newScanner(System.in);

doubleamount=0;//存放電量

doubleprice=0;//用戶需要交納的電費

System.out.print("輸入電量:");

amount=reader.nextDouble();

if(amount<=90&&amount>=1){

price=amount*0.6;//計算price的值

elseif(amount<=150&&amount>=91){

price=90*0.6+(amount-90)*1.1;//計算price的值

elseif(amount>150){

price=90*0.6+(150-90)*1.1+(amount-150)*1.7;//計算price的值

System.out.println("輸入電量:"+amount+"不合理");

System.out.printf("電費:%5.2f",price);

System.out.printf("%2c",c);

System.out.println();

System.out.printf("%2c",(c+32));

publicclassXiti5{

intsum=0,i,j;

for(i=1;i<=1000;i++){

for(j=1,sum=0;j<i;j++){

if(i%j==0)

sum=sum+j;

if(sum==i)

System.out.println("完數:"+i);

intn=1,i=1,jiecheng=1;

longsum=0;

while(true){

jiecheng=1;

for(i=1;i<=n;i++){

jiecheng=jiecheng*i;

sum=sum+jiecheng;

if(sum>9876)

n++;

System.out.println("滿足條件的最大整數:"+(n-1));

習題五

用類創建對象時。

一個類中可以有多個方法具有相同的名字,但這些方法的參數必須不同,即或者是參數的個數不同,或者是參數的類型不同。可以。

可以。不可以。

.不可以。

.一個類通過使用new運算符可以創建多個不同的對象,不同的對象的實例變量將被分配不同的內存空間。所有對象的類變量都分配給相同的一處內存,對象共享類變量。

.CD。

.。

8.sum=-100。

9.27。

10.100和20.0。

習題六

.如果子類和父類在同一個包中,那么,子類自然地繼承了其父類中不是private的成員變量作為自己的成員變量,并且也自然地繼承了父類中不是private的方法作為自己的方法,繼承的成員或方法的訪問權限保持不變。當子類和父類不在同一個包中時,父類中的private和友好訪問權限的成員變量不會被子類繼承,也就是說,子類只繼承父類中的protected和public訪問權限的成員變量作為子類的成員變量;同樣,子類只繼承父類中的protected和public訪問權限的方法作為子類的方法。如果所聲明的成員的變量的名字和從父類繼承來的成員變量的名字相同(聲明的類型可以不同),在這種情況下,子類就會隱藏掉所繼承的成員變量。

.不可以。

.abstract類。

動態 | 公鏈和交易所錢包使用的某知名第三方java庫存在被劫持攻擊風險:經Beosin成都鏈安安全技術團隊驗證:供公鏈和交易所錢包使用的某知名第三方java庫,存在被劫持攻擊的風險。尤其,在秘鑰生成過程中容易被劫持。

Beosin成都鏈安在此提醒廣大用戶在使用錢包時一定要從官方指定的地址下載,不要輕易從第三方下載錢包應用,避免造成不必要的資產損失。同時,建議各公鏈和交易所錢包方提高警惕并重視安全防范,使用第三方開源SDK時務必要注意安全性。[2019/9/30]

.A類是B類的父類,當用子類創建一個對象b,并把這個對象b的引用放到父類的對象a中時,稱a是b的上轉型對象。

.AD。

.15.0

8.0。

.98.0

12。

習題七

.不能。

.不能。

.可以把實現某一接口的類創建的對象的引用賦給該接口聲明的接口變量中。那么該接口變量就可以調用被類實現的接口中的方法。

15.0

8。

18

15。

習題八

.有效。

.可以。

.不可以。

.大家好,祝工作順利!

習題九

.ABD。

.Love:Game。

.15

abc我們。

.13579。

.9javaHello。

6.publicclassE{

Strings1,s2,t1="ABCDabcd";

s1=t1.toUpperCase();

s2=t1.toLowerCase();

System.out.println(s1);

System.out.println(s2);

Strings3=s1.concat(s2);

System.out.println(s3);

7.publicclassE{

Strings="ABCDabcd";

charcStart=s.charAt(0);

charcEnd=s.charAt(s.length()-1);

System.out.println(cStart);

System.out.println(cEnd);

8.

Scannerread=newScanner(System.in);

CalendarBeancb=newCalendarBean();

intyear=2000,month=1;

System.out.println("輸入年:");

year=read.nextInt();

System.out.println("輸入月:");

month=read.nextInt();

cb.setYear(year);

cb.setMonth(month);

Stringa=cb.getCalendar();//返回號碼的一維數組

charstr="日一二三四五六".toCharArray();

for(charc:str){

System.out.printf("%3c",c);

for(inti=0;i<a.length;i++){//輸出數組a

if(i%7==0)

System.out.println("");//換行

System.out.printf("%4s",a);

classCalendarBean{

Stringday;

intyear=0,month=0;

publicvoidsetYear(intyear){

this.year=year;

publicvoidsetMonth(intmonth){

this.month=month;

publicStringgetCalendar(){

Stringa=newString;

Calendarrili=Calendar.getInstance();

rili.set(year,month-1,1);

intweekDay=rili.get(Calendar.DAY_OF_WEEK)-1;//計算出1號的星期

intday=0;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

day=31;

if(month==4||month==6||month==9||month==11)

day=30;

if(month==2){

if(((year%4==0)&&(year%100!=0))||(year%400==0))

day=29;

day=28;

for(inti=0;i<weekDay;i++)

a="";

for(inti=weekDay,n=1;i<weekDay+day;i++){

a=String.valueOf(n);

for(inti=weekDay+day;i<a.length;i++)

returna;

importjava.util.*;

intyear1,month1,day1,year2,month2,day2;

System.out.println("輸入第一個日期的年、月、日(用空格或回車分隔):");

year1=read.nextInt();

month1=read.nextInt();

day1=read.nextInt();

System.out.println("輸入第二個日期的年月日(用空格或回車分隔):");

year2=read.nextInt();

month2=read.nextInt();

day2=read.nextInt();

Calendarcalendar=Calendar.getInstance();

calendar.set(year1,month1-1,day1);

longtimeYear1=calendar.getTimeInMillis();

calendar.set(year2,month2-1,day2);

longtimeYear2=calendar.getTimeInMillis();

long相隔天數=Math.abs((timeYear1-timeYear2)/(1000*60*60*24));

System.out.println(""+year1+"年"+month1+"月"+day1+"日和"+

year2+"年"+month2+"月"+day2+"日相隔"+相隔天數+"天");

10.

doublea=0,b=0,c=0;

a=12;

b=24;

c=Math.asin(0.56);

System.out.println(c);

c=Math.cos(3.14);

c=Math.exp(1);

c=Math.log(8);

11.publicclassE{

Stringstr="ab123you你是誰?";

Stringregex="\\D+";

str=str.replaceAll(regex,"");

System.out.println(str);

12.importjava.util.*;

Stringcost="數學87分,物理76分,英語96分";

Scannerscanner=newScanner(cost);

scanner.useDelimiter("+");

doublesum=0;

intcount=0;

while(scanner.hasNext()){

try{doublescore=scanner.nextDouble();

count++;

sum=sum+score;

System.out.println(score);

catch(InputMismatchExceptionexp){

Stringt=scanner.next();

System.out.println("總分:"+sum+"分");

System.out.println("平均分:"+sum/count+"分");

習題十

.使用FileInputStream。

.FileInputStream按字節讀取文件,FileReader按字符讀取文件。

.不可以。

.使用對象流寫入或讀入對象時,要保證對象是序列化的。

.使用對象流很容易得獲取一個序列化對象的克隆,只需將該對象寫入到對象輸出流,那么用對象輸入流讀回的對象一定是原對象的一個克隆。

6.

Filef=newFile("E.java");;

try{RandomAccessFilerandom=newRandomAccessFile(f,"rw");

random.seek(0);

longm=random.length();

while(m>=0){

m=m-1;

random.seek(m);

intc=random.readByte();

if(c<=255&&c>=0)

System.out.print((char)c);

else{

m=m-1;

random.seek(m);

bytecc=newbyte;

random.readFully(cc);

System.out.print(newString(cc));

}

}

}

catch(Exceptionexp){}

}

}

7.

importjava.io.*;

publicclassE{

publicstaticvoidmain(Stringargs){

Filefile=newFile("E.java");

FiletempFile=newFile("temp.txt");

try{FileReaderinOne=newFileReader(file);

BufferedReaderinTwo=newBufferedReader(inOne);

FileWritertofile=newFileWriter(tempFile);

BufferedWriterout=newBufferedWriter(tofile);

Strings=null;

inti=0;

動態 | 供應鏈攻擊再起 黑客入侵JavaScript庫竊取錢包比特幣:供應鏈攻擊是一種高級且非常隱蔽的攻擊模式,通常通過在軟件的依賴庫中嵌入惡意代碼實現,近日降維安全實驗室(johnwick.io)觀察到有黑客獲取了熱門JavaScript庫Event-Stream的控制權,并注入了惡意代碼來竊取Copay錢包內的比特幣等數字貨幣。該惡意代碼默認休眠狀態,當BitPay的Copay錢包啟動后,就會自動激活。它將會竊取用戶錢包內的私鑰并發送至copayapi.host:8080。該惡意代碼9月至11月期間感染了所有版本的Copay錢包。降維安全建議使用Copay錢包的用戶升級到最新版Copay v5.2.2, 使用Event-Stream庫的開發者請更新到v4.0.1。[2018/11/27]

s=inTwo.readLine();

while(s!=null){

i++;

out.write(i+""+s);

out.newLine();

s=inTwo.readLine();

}

inOne.close();

inTwo.close();

out.flush();

out.close();

tofile.close();

}

catch(IOExceptione){}

}

}

8.屬于上機操作題,解答略。

9.importjava.io.*;

importjava.util.*;

publicclassE{

publicstaticvoidmain(Stringargs){

Filefile=newFile("a.txt");

Scannersc=null;

doublesum=0;

intcount=0;

try{sc=newScanner(file);

sc.useDelimiter("+");

while(sc.hasNext()){

try{doubleprice=sc.nextDouble();

count++;

sum=sum+price;

System.out.println(price);

}

catch(InputMismatchExceptionexp){

Stringt=sc.next();

}

}

System.out.println("平均價格:"+sum/count);

}

catch(Exceptionexp){

System.out.println(exp);

}

}

}

習題十一

1.Frame容器的默認布局是BorderLayout布局。

2.不可以。

3.

importjava.awt.*;

importjavax.swing.event.*;

importjavax.swing.*;

importjava.awt.event.*;

publicclassE{

publicstaticvoidmain(Stringargs){

Computerfr=newComputer();

}

}

classComputerextendsJFrameimplementsDocumentListener{

JTextAreatext1,text2;

intcount=1;

doublesum=0,aver=0;

Computer(){

setLayout(newFlowLayout());

text1=newJTextArea(6,20);

text2=newJTextArea(6,20);

add(newJScrollPane(text1));

add(newJScrollPane(text2));

text2.setEditable(false);

(text1.getDocument()).addDocumentListener(this);

setSize(300,320);

setVisible(true);

validate();

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}

publicvoidchangedUpdate(DocumentEvente){

Strings=text1.getText();

Stringa=s.split("+");

sum=0;

aver=0;

for(inti=0;i<a.length;i++){

try{sum=sum+Double.parseDouble(a);

}

catch(Exceptionee){}

}

aver=sum/count;

text2.setText(null);

text2.append("\n和:"+sum);

text2.append("\n平均值:"+aver);

}

publicvoidremoveUpdate(DocumentEvente){

changedUpdate(e);

}

publicvoidinsertUpdate(DocumentEvente){

changedUpdate(e);

}

}

4.

importjava.awt.*;

importjavax.swing.event.*;

importjavax.swing.*;

importjava.awt.event.*;

publicclassE{

publicstaticvoidmain(Stringargs){

ComputerFramefr=newComputerFrame();

}

}

classComputerFrameextendsJFrameimplementsActionListener{

JTextFieldtext1,text2,text3;

JButtonbuttonAdd,buttonSub,buttonMul,buttonDiv;

JLabellabel;

publicComputerFrame(){

setLayout(newFlowLayout());

text1=newJTextField(10);

text2=newJTextField(10);

text3=newJTextField(10);

label=newJLabel("",JLabel.CENTER);

label.setBackground(Color.green);

add(text1);

add(label);

add(text2);

add(text3);

buttonAdd=newJButton("加");

buttonSub=newJButton("減");

buttonMul=newJButton("乘");

buttonDiv=newJButton("除");

add(buttonAdd);

add(buttonSub);

add(buttonMul);

add(buttonDiv);

buttonAdd.addActionListener(this);

buttonSub.addActionListener(this);

buttonMul.addActionListener(this);

buttonDiv.addActionListener(this);

setSize(300,320);

setVisible(true);

validate();

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}

publicvoidactionPerformed(ActionEvente){

doublen;

if(e.getSource()==buttonAdd){

doublen1,n2;

try{n1=Double.parseDouble(text1.getText());

n2=Double.parseDouble(text2.getText());

n=n1+n2;

text3.setText(String.valueOf(n));

label.setText("+");

}

catch(NumberFormatExceptionee)

{text3.setText("請輸入數字字符");

}

}

elseif(e.getSource()==buttonSub){

doublen1,n2;

try{n1=Double.parseDouble(text1.getText());

n2=Double.parseDouble(text2.getText());

n=n1-n2;

text3.setText(String.valueOf(n));

label.setText("-");

}

catch(NumberFormatExceptionee)

{text3.setText("請輸入數字字符");

}

}

elseif(e.getSource()==buttonMul)

{doublen1,n2;

try{n1=Double.parseDouble(text1.getText());

n2=Double.parseDouble(text2.getText());

n=n1*n2;

text3.setText(String.valueOf(n));

label.setText("*");

}

catch(NumberFormatExceptionee)

{text3.setText("請輸入數字字符");

}

}

elseif(e.getSource()==buttonDiv)

{doublen1,n2;

try{n1=Double.parseDouble(text1.getText());

n2=Double.parseDouble(text2.getText());

新一代安全高速主鏈項批露將支持JavaScript開發智能合約:上周獲得李笑來硬幣資本投資的新一代安全高速主鏈項目EON今日進一步披露其特性,表示支持JavaScript開發智能合約。c++開發需要有一定門檻,而且使用上也容易出錯,相比之下,JavaScript就更平易,準確。EON支持javascript意味著很多以太坊的智能合約開發者,web開發者也能參與進來。針對最近區塊鏈公司頻發的各種隱患,漏洞問題,EON表示,因為有前360首席科學家、美國北卡州立大學終身教授蔣旭憲博士領銜的區塊鏈安全團隊PeckShield(派盾科技)保駕護航。[2018/6/12]

n=n1/n2;

text3.setText(String.valueOf(n));

label.setText("/");

}

catch(NumberFormatExceptionee)

{text3.setText("請輸入數字字符");

}

}

validate();

}

}

5.importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassE{

publicstaticvoidmain(Stringargs){

Windowwin=newWindow();

win.setTitle("使用MVC結構");

win.setBounds(100,100,420,260);

}

}

classWindowextendsJFrameimplementsActionListener{

Laderlader;//模型

JTextFieldtextAbove,textBottom,textHeight;//視圖

JTextAreashowArea;//視圖

JButtoncontrolButton;//控制器

Window(){

init();

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

voidinit(){

lader=newLader();

textAbove=newJTextField(5);

textBottom=newJTextField(5);

textHeight=newJTextField(5);

showArea=newJTextArea();

controlButton=newJButton("計算面積");

JPanelpNorth=newJPanel();

pNorth.add(newJLabel("上底:"));

pNorth.add(textAbove);

pNorth.add(newJLabel("下底:"));

pNorth.add(textBottom);

pNorth.add(newJLabel("高:"));

pNorth.add(textHeight);

pNorth.add(controlButton);

controlButton.addActionListener(this);

add(pNorth,BorderLayout.NORTH);

add(newJScrollPane(showArea),BorderLayout.CENTER);

}

publicvoidactionPerformed(ActionEvente){

try{

doubleabove=Double.parseDouble(textAbove.getText().trim());

doublebottom=Double.parseDouble(textBottom.getText().trim());

doubleheight=Double.parseDouble(textHeight.getText().trim());

lader.setAbove(above);

lader.setBottom(bottom);

lader.setHeight(height);

doublearea=lader.getArea();

showArea.append("面積:"+area+"\n");

}

catch(Exceptionex){

showArea.append("\n"+ex+"\n");

}

}

}

classLader{

doubleabove,bottom,height;

publicdoublegetArea(){

doublearea=(above+bottom)*height/2.0;

returnarea;

}

publicvoidsetAbove(doublea){

above=a;

}

publicvoidsetBottom(doubleb){

bottom=b;

}

publicvoidsetHeight(doublec){

height=c;

}

}

習題十二

1.4種狀態:新建、運行、中斷和死亡。

2.有4種原因的中斷:JVM將CPU資源從當前線程切換給其他線程,使本線程讓出CPU的使用權處于中斷狀態。線程使用CPU資源期間,執行了sleep(intmillsecond)方法,使當前線程進入休眠狀態。線程使用CPU資源期間,執行了wait()方法,使得當前線程進入等待狀態。線程使用CPU資源期間,執行某個操作進入阻塞狀態,比如執行讀/寫操作引起阻塞。

3.死亡狀態,不能再調用start()方法。

4.新建和死亡狀態。

5.兩種方法:用Thread類或其子類。

6.使用setPrority(intgrade)方法。

7.Java使我們可以創建多個線程,在處理多線程問題時,我們必須注意這樣一個問題:當兩個或多個線程同時訪問同一個變量,并且一個線程需要修改這個變量。我們應對這樣的問題作出處理,否則可能發生混亂。

8.當一個線程使用的同步方法中用到某個變量,而此變量又需要其它線程修改后才能符合本線程的需要,那么可以在同步方法中使用wait()方法。使用wait方法可以中斷方法的執行,使本線程等待,暫時讓出CPU的使用權,并允許其它線程使用這個同步方法。其它線程如果在使用這個同步方法時不需要等待,那么它使用完這個同步方法的同時,應當用notifyAll()方法通知所有的由于使用這個同步方法而處于等待的線程結束等待。

9.不合理。

10.“吵醒”休眠的線程。一個占有CPU資源的線程可以讓休眠的線程調用interrupt方法“吵醒”自己,即導致休眠的線程發生InterruptedException異常,從而結束休眠,重新排隊等待CPU資源。

11.publicclassE{

publicstaticvoidmain(Stringargs){

Cinemaa=newCinema();

a.zhang.start();

a.sun.start();

a.zhao.start();

}

}

classTicketSeller//負責賣票的類。

{intfiveNumber=3,tenNumber=0,twentyNumber=0;

publicsynchronizedvoidsellTicket(intreceiveMoney)

{if(receiveMoney==5)

{fiveNumber=fiveNumber+1;

System.out.println(Thread.currentThread().getName()+

"給我5元錢,這是您的1張入場卷");

}

elseif(receiveMoney==10)

{while(fiveNumber<1)

{try{System.out.println(Thread.currentThread().getName()+"靠邊等");

wait();

System.out.println(Thread.currentThread().getName()+"結束等待");

}

catch(InterruptedExceptione){}

}

fiveNumber=fiveNumber-1;

tenNumber=tenNumber+1;

System.out.println(Thread.currentThread().getName()+

"給我10元錢,找您5元,這是您的1張入場卷");

}

elseif(receiveMoney==20)

{while(fiveNumber<1||tenNumber<1)

{try{System.out.println(Thread.currentThread().getName()+"靠邊等");

wait();

System.out.println(Thread.currentThread().getName()+"結束等待");

}

catch(InterruptedExceptione){}

}

fiveNumber=fiveNumber-1;

tenNumber=tenNumber-1;

twentyNumber=twentyNumber+1;

System.out.println(Thread.currentThread().getName()+

"給20元錢,找您一張5元和一張10元,這是您的1張入場卷");

}

notifyAll();

}

}

classCinemaimplementsRunnable

{Threadzhang,sun,zhao;

TicketSellerseller;

Cinema()

{zhang=newThread(this);

sun=newThread(this);

zhao=newThread(this);

zhang.setName("張小有");

sun.setName("孫大名");

zhao.setName("趙中堂");

seller=newTicketSeller();

}

publicvoidrun()

{if(Thread.currentThread()==zhang)

{seller.sellTicket(20);

}

elseif(Thread.currentThread()==sun)

{seller.sellTicket(10);

}

elseif(Thread.currentThread()==zhao)

{seller.sellTicket(5);

}

}

}

12.

publicclassE{

publicstaticvoidmain(Stringargs){

ClassRoomroom6501=newClassRoom();

room6501.student1.start();

room6501.student2.start();

try{Thread.sleep(1000);

}

catch(Exceptionexp){}

room6501.teacher.start();

}

}

classClassRoomimplementsRunnable{

Threadstudent1,student2,teacher;

ClassRoom(){

teacher=newThread(this);

student1=newThread(this);

student2=newThread(this);

teacher.setName("王教授");

student1.setName("張三");

student2.setName("李四");

}

publicvoidrun(){

if(Thread.currentThread()==student1){

try{System.out.println(student1.getName()+"正在睡覺,不聽課");

Thread.sleep(1000*60*10);

}

catch(InterruptedExceptione){

System.out.println(student1.getName()+"被老師叫醒了");

}

System.out.println(student1.getName()+"開始聽課");

student2.interrupt();//吵醒student2

}

elseif(Thread.currentThread()==student2){

try{System.out.println(student2.getName()+"正在睡覺,不聽課");

Thread.sleep(1000*60*60);

}

catch(InterruptedExceptione){

System.out.println(student2.getName()+"被張三叫醒了");

}

System.out.println(student2.getName()+"開始聽課");

}

elseif(Thread.currentThread()==teacher){

for(inti=1;i<=3;i++){

System.out.println("上課!");

try{Thread.sleep(500);

}

catch(InterruptedExceptione){}

}

student1.interrupt();//吵醒student1

}

}

}

13.

publicclassE{

publicstaticvoidmain(Stringargs){

JoinWorkwork=newJoinWork();

work.司機.start();

}

}

classJoinWorkimplementsRunnable{

Thread司機;

Thread裝運工;

Thread管理員;

JoinWork(){

司機=newThread(this);

裝運工=newThread(this);

管理員=newThread(this);

}

publicvoidrun(){

if(Thread.currentThread()==司機){

System.out.println("司機等待裝運工裝車");

try{

裝運工.start();

裝運工.join();

}

catch(InterruptedExceptione){}

System.out.println("司機開車走了");

}

elseif(Thread.currentThread()==裝運工){

System.out.println("裝運工等待管理員");

try{

管理員.start();

管理員.join();

}

catch(InterruptedExceptione){}

System.out.println("裝運工把車裝載完畢");

}

elseif(Thread.currentThread()==管理員){

System.out.println("管理員把裝車手續辦好,打開倉庫大門");

}

}

}

14.BA

習題十三

1.URL對象調用InputStreamopenStream()方法可以返回一個輸入流,該輸入流指向URL對象所包含的資源。通過該輸入流可以將服務器上的資源信息讀入到客戶端。

2.客戶端的套接字和服務器端的套接字通過輸入、輸出流互相連接后進行通信。

3.使用方法accept(),accept()會返回一個和客戶端Socket對象相連接的Socket對象。accept方法會堵塞線程的繼續執行,直到接收到客戶的呼叫。。

4.域名/IP。

5.客戶端

importjava.net.*;

importjava.io.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassClient

{publicstaticvoidmain(Stringargs)

{newComputerClient();

}

}

classComputerClientextendsFrameimplementsRunnable,ActionListener

{Buttonconnection,send;

TextFieldinputText,showResult;

Socketsocket=null;

DataInputStreamin=null;

DataOutputStreamout=null;

Threadthread;

ComputerClient()

{socket=newSocket();

setLayout(newFlowLayout());

Boxbox=Box.createVerticalBox();

connection=newButton("連接服務器");

send=newButton("發送");

send.setEnabled(false);

inputText=newTextField(12);

showResult=newTextField(12);

box.add(connection);

box.add(newLabel("輸入三角形三邊的長度,用逗號或空格分隔:"));

box.add(inputText);

box.add(send);

box.add(newLabel("收到的結果:"));

box.add(showResult);

connection.addActionListener(this);

send.addActionListener(this);

thread=newThread(this);

add(box);

setBounds(10,30,300,400);

setVisible(true);

validate();

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);

}

});

}

publicvoidactionPerformed(ActionEvente)

{if(e.getSource()==connection)

{try//請求和服務器建立套接字連接:

{if(socket.isConnected())

{}

else

{InetAddressaddress=InetAddress.getByName("127.0.0.1");

InetSocketAddresssocketAddress=newInetSocketAddress(address,4331);

socket.connect(socketAddress);

in=newDataInputStream(socket.getInputStream());

out=newDataOutputStream(socket.getOutputStream());

send.setEnabled(true);

thread.start();

}

}

catch(IOExceptionee){}

}

if(e.getSource()==send)

{Strings=inputText.getText();

if(s!=null)

{try{out.writeUTF(s);

}

catch(IOExceptione1){}

}

}

}

publicvoidrun()

{Strings=null;

while(true)

{try{s=in.readUTF();

showResult.setText(s);

}

catch(IOExceptione)

{showResult.setText("與服務器已斷開");

break;

}

}

}

}

服務器端

importjava.io.*;

importjava.net.*;

importjava.util.*;

publicclassServer

{publicstaticvoidmain(Stringargs)

{ServerSocketserver=null;

Server_threadthread;

Socketyou=null;

while(true)

{try{server=newServerSocket(4331);

}

catch(IOExceptione1)

{System.out.println("正在監聽");//ServerSocket對象不能重復創建

}

try{System.out.println("等待客戶呼叫");

you=server.accept();

System.out.println("客戶的地址:"+you.getInetAddress());

}

catch(IOExceptione)

{System.out.println("正在等待客戶");

}

if(you!=null)

{newServer_thread(you).start();//為每個客戶啟動一個專門的線程

}

}

}

}

classServer_threadextendsThread

{Socketsocket;

DataOutputStreamout=null;

DataInputStreamin=null;

Strings=null;

booleanquesion=false;

Server_thread(Sockett)

{socket=t;

try{out=newDataOutputStream(socket.getOutputStream());

in=newDataInputStream(socket.getInputStream());

}

catch(IOExceptione)

{}

}

publicvoidrun()

{while(true)

{doublea=newdouble;

inti=0;

try{s=in.readUTF();//堵塞狀態,除非讀取到信息

quesion=false;

StringTokenizerfenxi=newStringTokenizer(s,",");

while(fenxi.hasMoreTokens())

{Stringtemp=fenxi.nextToken();

try{a=Double.valueOf(temp).doubleValue();i++;

}

catch(NumberFormatExceptione)

{out.writeUTF("請輸入數字字符");

quesion=true;

}

}

if(quesion==false)

{doublep=(a+a+a)/2.0;

out.writeUTF(""+Math.sqrt(p*(p-a)*(p-a)*(p-a)));

}

}

catch(IOExceptione)

{System.out.println("客戶離開");

return;

}

}

}

}

6.解答略

習題十四

1.添加數據源,選擇驅動程序,命名數據源名稱。

2.importjava.sql.*;

importjava.util.*;

publicclassE{

publicstaticvoidmain(Stringargs){

Queryquery=newQuery();

StringdataSource="myData";

StringtableName="goods";

Scannerread=newScanner(System.in);

System.out.print("輸入數據源名:");

dataSource=read.nextLine();

System.out.print("輸入表名:");

tableName=read.nextLine();

query.setDatasourceName(dataSource);

query.setTableName(tableName);

query.setSQL("SELECT*FROM"+tableName);

query.inputQueryResult();

}

}

classQuery{

StringdatasourceName="";//數據源名

StringtableName="";//表名

StringSQL;//SQL語句

publicQuery(){

try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(ClassNotFoundExceptione){

System.out.print(e);

}

}

publicvoidsetDatasourceName(Strings){

datasourceName=s.trim();

}

publicvoidsetTableName(Strings){

tableName=s.trim();

}

publicvoidsetSQL(StringSQL){

this.SQL=SQL.trim();

}

publicvoidinputQueryResult(){

Connectioncon;

Statementsql;

ResultSetrs;

try{

Stringuri="jdbc:odbc:"+datasourceName;

Stringid="";

Stringpassword="";

con=DriverManager.getConnection(uri,id,password);

DatabaseMetaDatametadata=con.getMetaData();

ResultSetrs1=metadata.getColumns(null,null,tableName,null);

int字段個數=0;

while(rs1.next()){

字段個數++;

}

sql=con.createStatement();

rs=sql.executeQuery(SQL);

while(rs.next()){

for(intk=1;k<=字段個數;k++){

System.out.print(""+rs.getString(k)+"");

}

System.out.println("");

}

con.close();

}

catch(SQLExceptione){

System.out.println("請輸入正確的表名"+e);

}

}

}

3.importjava.sql.*;

importjava.util.*;

publicclassE{

publicstaticvoidmain(Stringargs){

Queryquery=newQuery();

StringdataSource="myData";

StringtableName="goods";

query.setDatasourceName(dataSource);

query.setTableName(tableName);

Stringname="";

Scannerread=newScanner(System.in);

System.out.print("商品名:");

name=read.nextLine();

Stringstr="'%%'";

StringSQL="SELECT*FROM"+tableName+"WHEREnameLIKE"+str;

query.setSQL(SQL);

System.out.println(tableName+"表中商品名是"+name+"的記錄");

query.inputQueryResult();

}

}

classQuery{

StringdatasourceName="";//數據源名

StringtableName="";//表名

StringSQL;//SQL語句

publicQuery(){

try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(ClassNotFoundExceptione){

System.out.print(e);

}

}

publicvoidsetDatasourceName(Strings){

datasourceName=s.trim();

}

publicvoidsetTableName(Strings){

tableName=s.trim();

}

publicvoidsetSQL(StringSQL){

this.SQL=SQL.trim();

}

publicvoidinputQueryResult(){

Connectioncon;

Statementsql;

ResultSetrs;

try{

Stringuri="jdbc:odbc:"+datasourceName;

Stringid="";

Stringpassword="";

con=DriverManager.getConnection(uri,id,password);

DatabaseMetaDatametadata=con.getMetaData();

ResultSetrs1=metadata.getColumns(null,null,tableName,null);

int字段個數=0;

while(rs1.next()){

字段個數++;

}

sql=con.createStatement();

rs=sql.executeQuery(SQL);

while(rs.next()){

for(intk=1;k<=字段個數;k++){

System.out.print(""+rs.getString(k)+"");

}

System.out.println("");

}

con.close();

}

catch(SQLExceptione){

System.out.println("請輸入正確的表名"+e);

}

}

}

4.將例子5中的代碼:

StringSQL="SELECT*FROM"+tableName+"ORDERBYname";

更改為:

StringSQL="SELECT*FROM"+tableName+"ORDERBYmadeTime";

可達題目要求。

5.使用預處理語句不僅減輕了數據庫的負擔,而且也提高了訪問數據庫的速度。

6.事務由一組SQL語句組成,所謂事務處理是指:應用程序保證事務中的SQL語句要么全部都執行,要么一個都不執行。步驟:

(1)使用setAutoCommit(booleanautoCommit)方法con對象首先調用setAutoCommit(booleanautoCommit)方法,將參數autoCommit取值false來關閉默認設置:

con.setAutoCommit(false);

(2)使用commit()方法。con調用commit()方法就是讓事務中的SQL語句全部生效。

(3)使用rollback()方法。con調用rollback()方法撤消事務中成功執行過的SQL語句對數據庫數據所做的更新、插入或刪除操作,即撤消引起數據發生變化的SQL語句操作,將數據庫中的數據恢復到commi()方法執行之前的狀態。

7.解答略。

Tags:atcCPUServeatc幣是什么幣CPU幣CPU價格Serve幣是什么幣

Luna
中行原副行長:加密貨幣神話還能撐多久_比特幣

編者按作者王永利系中國銀行原副行長,本文刊于12月10日經濟觀察報。即使將FTX由快速膨脹到迅速崩塌的誘因歸結于加密貨幣行情大跌,加密貨幣內在缺陷亦注定其神話難以長久.

1900/1/1 0:00:00
BVB創世發行——幣位Web3.0敘事的開篇之作_區塊鏈

11月3日,BVB創世發行直播從中午1點開啟,直至下午3點結束。短短兩個小時,給直播間觀眾,送去了7輪好禮:有盈利可提現的現金券,平臺幣BVB的空投,更有無門檻的大額贈金獎勵,在幣位的大水漫灌式.

1900/1/1 0:00:00
加密貨幣的2022終結_加密貨幣

全球第三大加密貨幣交易所、估值為320億美元的FTX,一周之內迅速墜入破產保護,創始人兼CEO班克曼·弗里德辭職,被美國和巴哈馬的監管部門調查。約百萬投資者和交易者的加密貨幣可能血本無歸.

1900/1/1 0:00:00
三位幣圈大佬先后意外去世,一個月內下跌了近19%,至1288.02美元_以太坊

三位幣圈大佬先后意外去世俄羅斯一名億萬富翁意外死于直升機墜毀事故,成為一個多月內第三位意外死亡的幣圈“大佬”。俄羅斯億萬富翁維亞切斯拉夫·塔蘭(左)的妻子在一次直升機墜毀事故中喪生,他在右邊.

1900/1/1 0:00:00
深圳市人民政府與中國海洋石油集團簽署全面戰略合作協議_清潔能源

讀創/深圳商報記者徐恬 11月30日上午,深圳市市長覃偉中與中國海洋石油集團董事長汪東進以視頻方式進行會談,共同見證深圳市人民政府與中國海洋石油集團簽署全面戰略合作協議.

1900/1/1 0:00:00
加密貨幣市場遇寒冬 澳洲比特幣與以太坊ETF紛紛退市_比特幣

來源:智通財經   在澳大利亞大張旗鼓推出的一批加密貨幣ETF即將退市,成為今年數字資產暴跌的最新受害者.

1900/1/1 0:00:00
ads