java程序設(shè)計(jì)課程作業(yè)_第1頁
java程序設(shè)計(jì)課程作業(yè)_第2頁
java程序設(shè)計(jì)課程作業(yè)_第3頁
java程序設(shè)計(jì)課程作業(yè)_第4頁
java程序設(shè)計(jì)課程作業(yè)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java程序設(shè)計(jì)課程作業(yè)

第一章緒論

1、安裝JavaSDK到你的電腦中。

2、選擇安裝一種Java開發(fā)工具到你的電腦中。Jcreater、NetBeans、Eclipse

3、編譯并運(yùn)行一個"HelloWorld”Java程序。

程序代碼:

//filename:App2_l.Java

publicclassApp2_l

(

publicstaticvoidmain(String[]args)

(

System.out.println("helloWord");

)

)

F:、大三學(xué)習(xí)App2_l.jaua

大三學(xué)習(xí)App2」

helloWord

F、大三學(xué)習(xí)\jaua>.

4、編譯并運(yùn)行一個JavaApplet程序。

答:編譯成功,不過瀏覽器不顯示自己的Applet程序,還在學(xué)習(xí)中,錯誤的原因是自己電

腦上java的安全設(shè)置的原因,修改后運(yùn)行成功。

第二章Java語法基礎(chǔ)

1、下列表達(dá)式是否有錯?若有錯,請說明何處出現(xiàn)何種錯誤;若無錯,請給出其值。

(1)3+4?2A-8

沒有錯誤,運(yùn)行結(jié)果為-28

(2)36>>2*4&48<<以1+2

運(yùn)行結(jié)果為0

(3)"abc"+123||8?2

有錯誤,||這個運(yùn)算規(guī)律是兩邊均為boolean型

(4)2*4&&0<2||4%2

有錯誤,I|這個運(yùn)算規(guī)律是兩邊均為boolean型

2、任意準(zhǔn)備一份學(xué)生成績表,其中包括至少3門課程、每門課程至少10名同學(xué)的成績。請

編寫程序完成以下功能:⑴統(tǒng)計(jì)并輸出各門課程的平均成績。(2)輸出等級表:優(yōu)、良、

中、及格與不及格。

importjava.util.*;

classstudent{

Stringnum;

doublemath;

doubleenglish;

doublechinese;

)

publicclassTest(

publicstaticvoidmain(String[]agrs){

studentstu[]=newstudent[11];

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

stu[i]=newstudent。;

Scannerreader=newScanner(System.in);

System.out.printing請依次輸入十個同學(xué)的數(shù)學(xué),英語。語文的成績:”);

for(inti=0;i<=10;i++){

System.out.printin(“第"+(i+l)+”同學(xué)的數(shù)學(xué),英語。語文的成績:”);

stu[i].math=reader.nextlnt();

stu[i].english=reader.nextlnt();

stu[i].chinese=reader.nextlnt();

)

doublesum=0;

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

sum=sum+stu[i].math;

floatA=(float)sum/10;

System.out.printIn("數(shù)學(xué)平均成績:”+A);

//intsum;

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

sum=sum+stu[i].math;

floatB=(float)sum/10;

System.out.printIn("數(shù)學(xué)平均成績:"+B);

//intsum;

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

sum=sum+stu[i].math;

floatC=(float)sum/10;

System.out.printIn("數(shù)學(xué)平均成績:"+C);

System.out.printIn("數(shù)學(xué)不及格的成績:”);

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

if(stu[i].math<60)

System.out.printIn(stu[i].math);

System.out.printin(“及格:");

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

if(stu[i].math>60)

System.out.printIn(stu[i].math);

System.out.printin(“優(yōu):");

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

if(stu[i].math>80)

System.out.printin(stu[i].math);

System.out.printIn("良:");

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

if(stu[i].math>90)

System.out.println(stu[i].math);

System.out.printIn("英語不及格的成績:”);

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

if(stu[i].english<60)

System.out.println(stu[i].english);

System.out.printin("及格:");

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

if(stu[i].english>60)

System.out.println(stu[i].english);

System,out.printIn("優(yōu):");

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

if(stu[i].english>80)

System?out?printin(stu[i].english);

System.out.printIn("良:");

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

if(stu[i].english>90)

System.out.printIn(stu[i].english);

System.out.printin("語文不及格的成績:”);

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

if(stu[i].chinese<60)

System.out.printIn(stu[i].Chinese);

System.out.printin("及格:");

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

if(stu[i].chinese>60)

System.out.printin(stu[i].Chinese);

System.out.println(“優(yōu):");

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

if(stu[i].chinese>80)

System.out.printIn(stu[i].Chinese);

System.out.printlnCg,:");

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

if(stu[i].chinese>90)

System.out.printIn(stu[i].Chinese);

}

)

3、編寫程序,用數(shù)組存儲并輸出乘法九九表。

〃編寫程序,用數(shù)組存儲并輸出乘法九九表

publicclassTest{

publicstaticvoidmain(String[]agrs){

int[][]a=newint[9][9];

for(inti=l;i<=9;i++)

for(intj=l;j<=i;j++){

System,out.print(j+,,*"+i+"=,,+i*j+"");

if(i==j)

System.out.print("\n");}

intn;

for(intm=0;m<9;m++){

for(n=0;n<=m;n++){

System.out.print(""+a[m][n]);

if(m==n)

System.out.print("\n");}

)

)

)

運(yùn)算結(jié)果:

<terminated>Test[JavaApplication]C:\ProgramFiIes\Java\jre7\bin\javaw.exe(2013年11

1*1=1

1*2=22*2=4

1*3=32*3=63*3=9

1*4=42*4=83*4=124*4=16

1*5=52*5=103*5=154*5=205*5=25

1*6=62*6=123*6=184*6=245*6=306*6=36

1*7=72*7=143*7=214*7=285*7=356*7=427*7=49

1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64

1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81

4、有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月

又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?

5、打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該

數(shù)本身。例如:153是一個"水仙花數(shù)",因?yàn)?53=1的三次方+5的三次方+3的三次方。

第三章Java面向?qū)ο?/p>

1、為某研究所編寫一個通用程序,用來計(jì)算每一種交通工具運(yùn)行1000公里所需的時間,已

知每種交通工具的參數(shù)都是3個整數(shù)A、B、C的表達(dá)式?,F(xiàn)有兩種工具:Car007和Plane,

其中Car007的速度運(yùn)算公式為:A*B/C,Plane的速度運(yùn)算公式為:A+B+C。需要編寫三類:

ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未來如果增力口第3種

交通工具的時候,不必修改以前的任何程序,只需要編寫新的交通工具的程序。其運(yùn)行過程

如下,從命令行輸入ComputeTime的四個參數(shù),第一個是交通工具的類型,第二、三、四

個參數(shù)分別時整數(shù)A、B、C,舉例如下:

計(jì)算Plane的時間:"javaComputeTimePlane203040"

計(jì)算Car007的時間:"javaComputeTimeCar007233445"

如果第3種交通工具為Ship,則只需要編寫Ship.java,運(yùn)行時輸入:"javaComputeTimeShip

223344"

提示:充分利用接口的概念,接口對象充當(dāng)參數(shù)。

實(shí)例化一個對象的另外一種辦法:Class.forName(str),newlnstance();例如需要實(shí)例化一個

Plane對象的話,則只要調(diào)用Class.forName("Plane)newlnstance()便可。

interfaceCommon{

abstractdoublegetv(inta,intb,intc);

)

classCar007implementsCommon{

publicdoublegetv(inta,intb_,intc){

if(c==0){

System.out.printin("參數(shù)C為0");

return0;}

else

returna*b/c;

)

)

classPlaneimplementsCommon(

publicdoublegetv(inta,intb,intc){

returna+b+c;

}

)

publicclasszuo31{

publicstaticvoidmain(String[]agrs){

}

)

2、編寫一個學(xué)生類Student,要求:⑴學(xué)生類Student屬性有:id:long型,代表學(xué)號

name:String類對象,代表姓名age:int型,代表年齡sex:boolean型,代表性別(其中:

true表示男,false表示女)phone:String類對象,代表聯(lián)系電話(2)學(xué)生類Student的方

法有:Student(longi,Stringn,inta,booleans,Stringp):有參構(gòu)造函數(shù),形參表中的參數(shù)分

別初始化學(xué)號、姓名、年齡、性別和聯(lián)系電話。intgetAge()():獲取年齡作為方法的返回

值。booleangetSex()():獲取性別作為方法的返回值。StringgetPhone():獲取聯(lián)系電話

作為方法的返回值。publicStringtoString():以姓名:聯(lián)系電話的形式作為方法的返回值。

classStudent{

longid;〃代表學(xué)號

Stringname;//代表姓名

intage;//代表年齡

booleansex"/代表性別(其中:true表示男,false表示女)

Stringphone;//,代表聯(lián)系電話

Student(longi,Stringn^intbooleans^Stringp){

id=i;

age=a;

name=n;

sex=s;

phone=p;

}

intgetAge(){

returnage;

}

booleangetSex(){

returnsex;

)

StringgetPhone(){

returnphone;

)

publicStringtoString(){

returnname+phone;//以姓名:聯(lián)系電話的形式作為方法的返回值。

}

)

publicclassTest(

publicstaticvoidmain(String[]agrs){

Strings,phone,np;

intage;

Studentr=newStudent(201108011J郭文杰”,20,falsej);

booleana=r.getSex();

if(a==true)

s="男";

else

s="女";

age=r.getAge();

phone=r.getPhone();

System.out?printin("該同學(xué)的姓名是”++”學(xué)號:”+r.id+”年齡:

”+age+“性別:”+s+”電話:"+phone);

np=r.toString();

System.out.printIn(np);

}

)

3、利用接口編寫三角形、矩形的面積和周長的程序。

interfaceShape(//接口

abstractdoublegetArea();

abstractdoublegetlength();

)

classRectangleimplementsShape{〃長方形的類

privatedoublea;

privatedoubleb;

publicRectangle(doublei,doublej){

a=i;

b=j;

)

publicdoublegetArea(){

returna*b;

}

publicdoublegetlength(){

return2*(a+b);

}

)

classtriangleimplementsShape{〃三角形的類

doublea?b,c;

doublep;

publictriangle(doublei,doublej,doublek){

a二i;

b=j;

c=k;

)

publicdoublegetArea(){

p=(double)(Math.round(a+b+c)/2.0);//將p保留小數(shù)位

returnjava.lang.Math.sqrt(p*(p-a)*(p-b)*(p-c));〃三角形面積公式

)

publicdoublegetlength(){

returna+b+c;

}

)

publicclasszuoye3{

publicstaticvoidmain(String[]agrs){

doublesl,s2,cl,c2;

triangletri=newtriangle(3,4,5);〃三角形對象

Rectanglerec=newRectangle(4,5);〃矩形對象

sl=tri.getArea();

cl=tri.getlength();

s2=rec.getArea();

c2=rec.getlength();

System.。ut.println(',三角形的面試是:,,+sl+”周長是:"+cl);

System.。ut.println("矩形的面試是:”+s2+”周長是:"+c2);

}

)

4、編寫一個截取字符串的函數(shù),輸入為一個字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。

但是要保證漢字不被截半個,如"我ABU4,應(yīng)該截為"我AB",輸入"我ABC漢DEF",6,應(yīng)

該輸出為"我ABC"而不是"我ABC+漢的半個"。

第四章Java異常處理

1、寫程序運(yùn)行結(jié)果:

publicclassA{

staticintsome(){

try(

System.out.println("try");

return1;

)

finally{

System.out.println("finally");

)

)

publicstaticvoidmain(Stringarg[]){

System.out.println(some());

)

)

2、先從鍵盤輸入一個十六進(jìn)制數(shù),再將其轉(zhuǎn)化為十進(jìn)制數(shù),然后輸出。若輸入的不是一個

有效的十六進(jìn)制數(shù),則拋出異常。

importjava.util.*;

publicclassdex{

publicstaticvoidmain(String[]agrs){

Scannerreader=newScanner(System.in);

Strings;

intn^m;

System.out.printin("請輸入十六進(jìn)制數(shù):”);

try{

s=reader.next();

n=Integer,parselnt(s,16);

System.out.printIn(n);

)

catch(InputMismatchExceptione){

e.printStackTrace();}

)

)

3、先編寫一個方法,它將格式為“yyyy/mm/dd”形式的日期字符串轉(zhuǎn)化為日期對象。若日

期字符串不符合以上規(guī)定,則拋出異常。再在main方法中對正常和異常輸入的日期字符串

分別進(jìn)行驗(yàn)證,并輸出轉(zhuǎn)換后的日期對象。

第五章Java常見類

1、設(shè)有一個由10個英文單詞構(gòu)成的字符串?dāng)?shù)組,要求:

(1)統(tǒng)計(jì)以字母“W”開頭的單詞數(shù);

(2)統(tǒng)計(jì)單詞中含“or”字符串的單詞數(shù);

⑶統(tǒng)計(jì)長度為3的單詞數(shù)。

代碼是:

importjava.util.*;

publicclassArray{

publicstaticvoidmain(String[]agrs){

String[]word=newString[10];

intcountl=0,count2=0,count3=0;

inti=0jj=0;

Scannerreader=newScanner(System.in);

System.out.printin(”請輸入十個單詞:”);

for(j=0;j<word.length;j++){

word[j]=reader.next();

}

do{

if(word[i].charAt(0)=='w')

countl++;

if(word[i].length()==3)

count3++;

if(word[i].contains("or"))

count2++;

i++;

}while(i<word.length);

System.out.printin("在這是個單詞中首字母是‘w”的單詞總共有:"+countl+"

個”);

System.out.printin("在這是個單詞中含有“or”的單詞總共有:"+count2+"

個”);

System.out.printIn("在這是個單詞中長度為3的單詞總共有:”+count3+”個

");

}

}

2、利用隨機(jī)函數(shù)產(chǎn)生20個10?90之間的不重復(fù)整數(shù),將這些數(shù)拼接在一個字符串中,用逗

號隔開(每產(chǎn)生一個新數(shù),要保證在該串中不存在)。然后將字符串中的整數(shù)分離存放到一個

數(shù)組中,將數(shù)組的內(nèi)容按由小到大的順序輸出。

importjava.util.Random;

publicclassrand{

publicstaticvoidmain(String[]agrs){

Randomrand=newRandom();

int[]num=newint[20];

inta;

for(inti=0;i〈num.length;){//隨機(jī)產(chǎn)生20個10?90之間的不重復(fù)整數(shù)

a=rand.nextlnt();

intb=a%90;

for(intj=i;j>=0;j--){

if(b==num[j])b=0;}

if(b>10){

num[i]=b;

i++;}

)

Strings="

System.out.print("產(chǎn)生的20個隨機(jī)數(shù)是\n”);

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

System.out.print(num[i]+"");

s=s+num[i];}

System.out.println(”\n鏈接成字符串后的結(jié)果時:\n"+s);

inttern;

for(inti=0;i<num.length;i++){//排序

tem=num[i];

for(intj=i+l;j<num.length;j++){

if(num[j]<tem){

tem=num[j];

num[j]=num[i];

num[i]=tem;}

)

)

System.out.print("排序后的結(jié)果時:\n");

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

System.out.print(num[i]+"");

}

)

3、先任意輸入不超過10個人的姓名和電話到電話簿,然后從電話簿中查詢指定人的電話。

importjava.util.*;

classpeople{//建立類包含姓名與電話

Stringname,number;

publicpeople(Stringn,Stringm){

name=n;

number=m;

)

}

publicclassphonenum{

publicstaticvoidmain(String[]agrs){

Scannerreader=newScanner(System.in);

people[]p=newpeople[10];〃數(shù)組對象

Stringa,b;

System.out.printIn(”請輸入十個人的姓名以及他們的電話:");

for(inti=0;i<p.length;i++){〃輸入是個人的姓名與電話,

并保存

a=reader.next();

b=reader.next();

peoples=newpeople(aJb);

P[i]=s;

)

Strings="";

System.out.println("請輸入要查找的人的姓名");

s=reader.next();

for(inti=0;i<p.length;i++){〃判斷某人是否在該電話簿

if(s.equals(p[i].name)){

System.out.printIn("該人的電話是號碼是:"+p[i].number);

break;}

else

{System.out.printin("沒有此人的電話”);break;}

)

}

)

4、編寫一個日歷,按照格式y(tǒng)yyy-MM-dd輸入一個指定日期,可以顯示當(dāng)月的日歷,該指

定日期前面加*以示是你輸入的日期。

第六章Java輸入輸出

1、說明程序功能:

importjava.io.*;

publicclassCharWrite{

publicstaticvoidmain(Stringargs[]){

try(

FileWriterfw=newFileWriter("charset.txt");

for(inti=32;i<126;i++)

fw.write(i);

fw.close();

}catch(lOExceptione){}

}

)

2、先用隨機(jī)函數(shù)產(chǎn)生出任意的20個整數(shù),再按由小到大的順序排序,然后將結(jié)果寫入一個

文件中,最后從該文件中讀出后顯示出來。請分別用順序文件和隨機(jī)文件的讀寫形式進(jìn)行編

程測試。

3、統(tǒng)計(jì)一個文本文件中單詞的個數(shù)。文本文件的名字從命令行中獲得。

第七章Java圖形用戶界面

1、閱讀下面的程序,回答問題。

importjava.awt.*;

importjavax.swing.*;

publicclassTextendsJFrame{

publicT(){

super("GridLayout");

Containercon=this.getContentPane();

con.setLayout(newGridLayout(2,3));

con.add(newJButton("a"));

con.add(newJButton("b"));

con.add(newJButton("c"));

con.add(newJButton("d"));

con.add(newJButton("e"));

con.add(newJButton("f"));

setSize(200,80);

setVisible(true);

)

publicstaticvoidmain(Stringargs[]){

newT();

)

)

。畫圖表示程序運(yùn)行后的圖形界面。

?如果程序通過實(shí)現(xiàn)某個接口處理按鈕的動作事件,則該接口名為何?接口中的方法頭聲明

如何?

2、編寫一個簡單的計(jì)算器,要求圖形用戶界面如下圖所示。

3、請編寫一個簡單的用戶登錄程序。要求使用圖形用戶界面,用戶名和密碼假定均為java,

且密碼輸入時全部顯示為星號(*)。

4、編寫一個顯示六個標(biāo)簽的框架,將標(biāo)簽前景色設(shè)為黑色、藍(lán)色、青色、綠色、紅色、橙

色,標(biāo)簽邊界為黃色邊界,標(biāo)簽字體為TimesRoman、加粗、20像素,每個標(biāo)簽的文本為前

景色名字。如下圖。

Exercisel2_8-||□j,X

blackblue

greenmagenta

第八章Java多線程技術(shù)

1、程序如下:

publicclassBorleyextendsThread

(

publicstaticvoidmain(String[]argv)

(

Borleyb=newBorley();

b.start();

)

publicvoidrun()

(

System.out.println("Running");

)

)

下面描述正確的是:()單選

A)通過編譯和運(yùn)行但是沒有任何輸出。

B)通過編譯,運(yùn)行后輸出"Running"

C)編譯出錯,沒有線程可供運(yùn)行

D)編譯出錯,沒有權(quán)限使用Thread

2、編寫程序,啟動1000個線程,每個線程給初值為0的變量sum加1。(提示,需要通過

引用傳遞,將sum傳遞給每個線程,為了能夠進(jìn)行引用傳遞,需要定義一個Integer包裝對

象來保存sum)o

3、利用多線程技術(shù)模擬龜兔賽跑的場面。提示:先設(shè)計(jì)一個線程類模擬兩個參與賽跑的選

手的行為;然后創(chuàng)建該類的兩個對象分別代表烏龜和兔子;讓兔子跑快些,但在路上睡眠休

息時間長些,而烏龜跑慢些卻不休息;當(dāng)某個選手到達(dá)終點(diǎn)時其線程運(yùn)行結(jié)束;二個選手均

到達(dá)終點(diǎn)時,顯示并祝賀獲勝選手,然后主線程結(jié)束。

第九章網(wǎng)絡(luò)編程

1、關(guān)于數(shù)據(jù)報(bào)通信(UDP)和流式通信(TCP)的論述,正確的有:(選擇1項(xiàng))

A)TCP和UDP在很大程度上是一樣的,由于歷史原因產(chǎn)生了兩個不同的名字而已

B)TCP和UDP在傳輸方式上是一樣的,都是基于流的但是TCP可靠,UDP不可靠

C)TCP和UDP使用的都是IP層所提供的服務(wù)

D)用戶不可以使用UDP來實(shí)現(xiàn)TCP的功能

2、說明程序功能。

.*;

importjava.io.*;

publicclassSimpleTalkServer{〃存放所有通信線程

publicstaticArrayList<Client>allclient=newArrayList<Client>();

publicstaticintclientnum=O;〃連接客戶數(shù)

publicstaticvoidmain(Stringargs[]){

try{

ServerSockets=newServerSocket(5432);

while(true){

Socketsl=s.accept();〃等待客戶連接

DataOutputStreamdos二newDataOutputStream

(si.getOutputStream());

DatalnputStreamdin二newDataInputStream(sl.getlnputStreamO);

Clientx二newClient(clientnum,dos,din);

allclient,add(x);

allclient[clientnum].start();

clientnum++;

)

}catch(lOExceptione){}

}}

classClientextendsThread(

intid;〃客戶標(biāo)識

DataOutputStreamdos;〃去往客戶的輸出流

DatalnputStreamdin;〃來自客戶的輸入流

publicClient(intid,DataOutputStreamdos,DatalnputStreamdin){

this.id=id;

this.dos=dos;

this.din=din;

publicvoidrun(){

while(true){

try{

Stringmessage=din.readUTFO;

intm=SimpleTalkServer.clientnum;

for(inti=0;i<m;i++){

SimpleTalkServer.allclient[i].dos.writeUTF(message);

)

}catch(lOExceptione){}

}

)

}

3、編寫一個程序,使兩個用戶可以互相聊天。其中一個用戶作為客戶端,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論