会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133307个问题

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class TwoWaySocketSever {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        Scanner scanner = null;
        BufferedReader br = null;
        PrintWriter pw = null;
        try {
            serverSocket = new ServerSocket(7777);
            System.out.println("服务端启动!监听端口8888~~~~~");
            socket = serverSocket.accept();
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            scanner = new Scanner(System.in);
            pw = new PrintWriter(socket.getOutputStream());
            while (true) {
                String str = br.readLine();
                System.out.println("客户端说:" + str);

                String keyput = scanner.nextLine();
                pw.println(keyput);
                pw.flush();

            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(br !=null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(scanner!=null){
                scanner.close();
            }
            if(socket !=null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(pw !=null){
                pw.close();
            }


        }
    }
}

    老师这是为什么报错呢1650255519(1).png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 271楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 272楼

老师,这是代码

import java.util.Calendar;
import java.util.*;

public class TestCalendar {
    public static void main(String[] args) {

        //得到日期相关元素
        GregorianCalendar calendar = new GregorianCalendar
                (2020, 12, 13, 15, 19, 12);
        int year = calendar.get(Calendar.YEAR);
        int month=calendar.get(Calendar.MONTH);
        int day=calendar.get(Calendar.DAY_OF_MONTH);
        int day2=calendar.get(Calendar.DATE);
        //日,Calendar.DAT_OF_MONTH和Calendar.DATE同义。
        int date=calendar.get(Calendar.DAY_OF_WEEK);
        //星期几,这里是1-7,周日是1,周一是7
        System.out.println(year);
        System.out.println(month);
        System.out.println(day);
        System.out.println(day2);
        System.out.println(date);

        //设置日期
        GregorianCalendar calendar2=new GregorianCalendar();
        calendar2.set(Calendar.YEAR,1997);
        calendar2.set(Calendar.MONTH,9);     //月份0-11
        calendar2.set(Calendar.DATE,3);
        calendar2.set(Calendar.HOUR_OF_DAY,12);
        calendar2.set(Calendar.MINUTE,13);
        calendar2.set(Calendar.SECOND,14);
        printCalendar(calendar2);

        //日期计算
        GregorianCalendar calendar3=new GregorianCalendar
                (2020,11,13,11,22,33);
        calendar3.add(Calendar.MONTH,-1);
        calendar3.add(Calendar.DATE,+1);
        printCalendar(calendar3);

        //日历对象和时间对象的转化
        Date d=calendar3.getTime();
        GregorianCalendar calendar4=new GregorianCalendar();
        calendar4.setTime(new Date());

        static void printCalendar(Calendar calendar){
            int year2 =calendar.get(Calendar.YEAR);
            int month2=calendar.get(Calendar.MONTH)+1;
            int day3=calendar.get(Calendar.DATE);
            int date2=calendar.get(Calendar.DAY_OF_WEEK)-1;   //星期几
            String week=""+((date==0)?"日":date);

            int hour=calendar.get(Calendar.HOUR);
            int minute=calendar.get(Calendar.MINUTE);
            int second=calendar.get(Calendar.SECOND);
            System.out.println("yyyy年MM月dd日 hh时ff分mm秒");

        }


    }
}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 274楼

老师,我的代码运行时,只会出现单线程跑,似乎是出现了死锁的情况,检查不出问题,请老师帮我看看

package 线程冲突3;


public class ProduceTestThread {

    public static void main(String[] args) {

    SyncStack ss=new SyncStack();

    new shengChang(ss).start();

    new xiaoFei(ss).start();

    }

}

/**

 * 馒头类

 */

class manTou{

    private int id;


    public int getId() {

        return id;

    }


    public void setId(int id) {

        this.id = id;

    }

}


/**

 * 缓冲区

 */

class SyncStack{

    //定义放馒头的盒子

    manTou []mtArr=new manTou[10];

    //定义取馒头的盒子

    int index;


    /**

     * 放馒头的方法

     */

    public synchronized void fang(manTou mt){

        while(index==mtArr.length){

            try {

                wait();

             /*   notify();*/

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

        this.notify();

        mtArr[index]=mt;

        index++;

    }

    /**

     * 取馒头的方法

     */

    public synchronized manTou qu(int index){

        /*System.out.println("测试:进去取");*/

        while(index==0){

            try {

                this.wait();


            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

        this.notify();

        this.index--;

        return mtArr[this.index];

    }



}


/**

 * 生产者线程

 */

class shengChang extends  Thread{

    private SyncStack ss;

    shengChang(SyncStack ss){

        this.ss=ss;

    }


    @Override

    public void run() {


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

             manTou mt=new manTou();

            ss.fang(mt);

            ss.mtArr[i].setId(i+1);

            System.out.println("生产馒头:"+ss.mtArr[i].getId());


        }

        /*System.out.println("共计生产了馒头"+sum+"个");*/


    }

}


/**

 * 消费者线程

 */

class xiaoFei extends  Thread{

    private  SyncStack ss;

    xiaoFei(SyncStack ss){

        this.ss=ss;

    }


    @Override

    public void run() {

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

            ss.qu(i);

            System.out.println("消费馒头:"+ss.mtArr[i].getId());

            /*manTou mt = ss.qu(i);

            System.out.println("消费馒头"+mt.getId());*/

        }

    }

}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术 275楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/异常机制 276楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 278楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 283楼

package com.hy.io.TestInputStreamReader;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

/***
 * 测试转换流
 * @author hy
 *
 */

public class TestInputStreamReader01 {
	public static void main(String[] args) throws IOException  {
		//任务需求是将键盘输入的数据写入磁盘		
		//1,数据源的标准输入,键盘System.in
		InputStream is=System.in;
		//2,使用转换流,转换成字符串
		InputStreamReader isr=new InputStreamReader(is,"gbk");
		//3,提高读取效率
		BufferedReader br=new BufferedReader(isr);
		//4,提高写入效率
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\cc.txt")));							
			//5,写入磁盘文件
			String line=null;//用来存储读到的字符串
			while("over".equals((line=br.readLine()))){//通过读取的字符和over进行对比,如果相等,则停止
				bw.write(line);//读取整行字符
				bw.newLine();//换行
				bw.flush();	//手动刷新缓存	
			}		
			//6,关闭程序			
			bw.close();				
			br.close();					
	}
}

老师你好,我是按照视频敲得代码,但是最后的控制台输入时,怎么换行呀?如果输入的是非over数据,按enter换行时,程序运行也就结束了指定的文件为空;如果输入的是over,按enter键可以正常换行继续输入,但是指定的文件中只会有over这个数据,

JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 285楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637