十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
因?yàn)槟闶褂昧薆ufferedReader的readLine方法,這個(gè)方法要讀取到換行符才會(huì)停止阻塞。所以要在所有write的字符串末尾加上換行符("\r\n")
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),高青企業(yè)網(wǎng)站建設(shè),高青品牌網(wǎng)站建設(shè),網(wǎng)站定制,高青網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,高青網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
最后幫你改得:
服務(wù)器端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class Server extends Thread{
Socket s = null;
public static ListChat chats = new ArrayListChat();
public static void main(String[] args) {
new Server().start();
}
public void run() {
try {
// 指定端口開(kāi)始監(jiān)聽(tīng)
ServerSocket ss = new ServerSocket(3456);
// 阻塞并接受客戶端連接請(qǐng)求
while (true) {
s = ss.accept();
Chat chat = new Chat(s);
// 每接收一個(gè)客戶端就起一個(gè)單獨(dú)的聊天線程
new Thread(chat).start();
chats.add(chat);
System.out.println("Join a client thread!");
System.out.println("Current client thread amount: " + chats.size());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 聊天線程
class Chat implements Runnable {
BufferedReader br = null;
BufferedWriter bw = null;
Socket s = null;
public Chat(Socket s) {
this.s = s;
try {
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
} catch (Exception e) {
e.printStackTrace();
}
}
// 將客戶端發(fā)來(lái)的消息打印并重發(fā)回去
@Override
public void run() {
try {
String str = null;
bw.write("hello");
bw.write("\r\n");
bw.flush();
while (true) {
if ((str = br.readLine()) != null) {
System.out.println("Client say: " + str);
bw.write(str);
bw.write("\r\n");
bw.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
==============================
客戶端:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client implements Runnable {
Socket s = null;
BufferedWriter write = null;
BufferedReader read = null;
Scanner input = new Scanner(System.in);
public static void main(String[] args) {
Client client = new Client();
client.start();
}
public void start() {
String str = null;
try {
s = new Socket("127.0.0.1", 3456);
read = new BufferedReader(new InputStreamReader(s.getInputStream()));
write = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
new Thread(this).start();
//負(fù)責(zé)發(fā)送消息給服務(wù)端
while (true) {
str = input.next();
if (str.equalsIgnoreCase("bye")) {
break;
}
write.write(str);
write.write("\r\n");
write.flush();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
write.close();
read.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//負(fù)責(zé)接收服務(wù)端的消息
@Override
public void run() {
String str = null;
try {
while (true) {
str = read.readLine();
System.out.println("Client say:" + str);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
正好我閑著,給你寫(xiě)一個(gè)吧。
我寫(xiě)的這個(gè)評(píng)委分?jǐn)?shù)是在代碼里固定到數(shù)組里了,如果你需要運(yùn)行時(shí)手動(dòng)輸入評(píng)分,可以將oldScores里的數(shù)據(jù)改成手動(dòng)輸入就行了(這個(gè)不用我再寫(xiě)了吧,如果不會(huì)再追問(wèn),再告訴你)。
你先新建一個(gè)類,將下面的main方法全部復(fù)制進(jìn)去就能運(yùn)行了,自己看一下吧。
/**?主方法?*/
public?static?void?main(String[]?args)
{
/**?保存原始評(píng)分的數(shù)組(如果你需要運(yùn)行時(shí)手動(dòng)輸入分?jǐn)?shù),將?oldScores中的數(shù)據(jù)改成手動(dòng)輸入就行了?*/
double[]?oldScores?=?{15,?77,?55,?88,?79,?98,?67,?89,?68,?88};
/**?最終將用來(lái)保存排序后的數(shù)組?*/
double[]?scores?=?new?double[oldScores.length];
double?temp;
/**?平均分?*/
double?avg?=?0;
int?k;
/**?將原始評(píng)分放入最終排序數(shù)組?*/
for?(int?i?=?0;?i??oldScores.length;?i++)
{
scores[i]?=?oldScores[i];
}
/**?開(kāi)始排序?*/
for?(int?i?=?0;?i??scores.length?-?1;?i++)
{
k?=?i;
for?(int?j?=?i?+?1;?j??scores.length;?j++)
{
if?(scores[k]??scores[j])
{
k?=?j;
}
}
if?(i?!=?k)
{
temp?=?scores[k];
scores[k]?=?scores[i];
scores[i]?=?temp;
}
}
/**?計(jì)算去掉最高分和最低分之后的和?*/
double?sum?=?0;
/**?記錄計(jì)算平均分的分?jǐn)?shù)個(gè)數(shù)?*/
double?num?=?0;
for?(int?i?=?1;?i??scores.length?-?1;?i++)
{
num++;
sum?+=?scores[i];
}
/**?計(jì)算平均分?*/
avg?=?sum?/?num;
/**?最公平的肯定不是在scores數(shù)組兩端?*/
double?zgp?=?0;
double?cha?=?0;
/**?標(biāo)記與平均值差值最小的分?jǐn)?shù)位置?*/
int?flag?=?0;
/**?開(kāi)始尋找最公平評(píng)分?*/
for?(int?i?=?1;?i??scores.length?-?1;?i++)
{
/**?為cha賦初始值,注意比較差值要使用絕對(duì)值比較?*/
if?(i?==?1)
{
cha?=?Math.abs(scores[i]?-?avg);
}
double?cha1?=?Math.abs(scores[i]?-?avg);
if?(cha1??cha)
{
cha?=?cha1;
flag?=?i;
}
}
zgp?=?scores[flag];
/**?由于最不公平的分?jǐn)?shù)肯定在scores數(shù)組的第一個(gè)或者是最后一個(gè)?*/
double?bgp?=?0;
if?(Math.abs(scores[0]?-?avg)??Math.abs(scores[scores.length?-?1]?-?avg))
{
bgp?=?scores[0];
}
else
{
bgp?=?scores[scores.length?-?1];
}
/**?全部計(jì)算完成,下面開(kāi)始輸出結(jié)果?*/
System.out.println("原始評(píng)委分?jǐn)?shù)如下:");
for?(int?i?=?0;?i??oldScores.length;?i++)
{
System.out.print(oldScores[i]?+?",?");
}
System.out.println();
System.out.println("排序后分?jǐn)?shù)如下:");
for?(int?i?=?0;?i??scores.length;?i++)
{
System.out.print(scores[i]?+?",?");
}
System.out.println();
System.out.println("去掉最高分和最低分后平均分:"?+?avg);
System.out.println("最公平分?jǐn)?shù):"?+?zgp);
System.out.println("最不公平分?jǐn)?shù):"?+?bgp);
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請(qǐng)輸入學(xué)生的分?jǐn)?shù):");
double score = input.nextDouble();
int level1,level2;
if(score=60.0 score=100.0){
System.out.print("該學(xué)生成績(jī)?yōu)閮?yōu)秀!");
}
else if(score=0 score60.0){
System.out.print("該學(xué)生成績(jī)?yōu)椴患案瘢?);
}
else{
System.out.print("您輸入的成績(jī)有誤!");
}
}?? ?
}