会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132452个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2161楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2163楼

提问:在视频代码中,for循环输出i,通过判断c1.get(Calendar.DAY_OF_MONTH)是否等于7(周六)来输出回车换行什么意义?c1.get(Calendar.DAY_OF_MONTH)只跟输入的日期有关啊,这个值并不会改变啊,在for循环中这个值是固定的,且在这个视频中,这个值为6,并不等于7,为什么回车换行了呢?

package cn.sxt.test;

import java.text.DateFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class TestGregorianCalendar {

	public static void main(String[] args) throws ParseException {
		// TODO Auto-generated method stub
		Calendar cal = new GregorianCalendar();
		System.out.println("please input a date:yyyy-MM-dd");
		Scanner scan = new Scanner(System.in);
		String str=scan.nextLine();
		DateFormat d =new SimpleDateFormat("yyyy-MM-dd");
		Date d2 = d.parse(str);
		cal.setTime(d2);
		cal.set(Calendar.DAY_OF_MONTH, 1); //It's very important
		int dayOfWeek=cal.get(Calendar.DAY_OF_WEEK);
		System.out.println(cal.get(7));
		System.out.println(dayOfWeek);
		System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
		for (int i = 1; i < dayOfWeek; i++) {
			System.out.print("\t");
		}
		for (int i = 1; i <=31; i++) {
			System.out.print(i+"\t");
			if (cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {//难不成cal.get(Calendar.DAY_OF_WEEK)的值
			会随着循环变化?我的代码这里的值并没有变化啊
				System.out.println();
			}
		}
		cal.add(Calendar.DAY_OF_MONTH, 1);
	}

}


JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 2165楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2167楼

package com.itbaizhan;

import com.sun.imageio.plugins.wbmp.WBMPImageReader;

import java.util.Stack;

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

        //实例化
        Stack<String> stack = new Stack<>();

        System.out.println(stack.empty());



        //将元素添加到栈容器中
        stack.push("a");
        stack.push("f");
        stack.push("b");
        //返回元素位置
        System.out.println(stack.search("a"));
        //查找栈元素
        System.out.println(stack.peek());
        //获取
        String pop = stack.pop();
        System.out.println(pop);
        String pop1 = stack.pop();
        System.out.println(pop1);
        String pop2 = stack.pop();
        System.out.println(pop2);

        System.out.println("----------------------------");

        StackTest stackTest = new StackTest();
        stackTest.symmetry();




    }

    public void symmetry(){
        String str = "..(......{....{[[.......}]]]]..]]........";
        Stack<String> stack = new Stack<>();

        boolean flag = true;

        for(int i = 0;i<str.length();i++){
            char c = str.charAt(i);
            if (c=='{'){
                stack.push("}");

            }
            if (c == '['){
                stack.push("]");
            }
            if (c == '('){
                stack.push(")");
            }

            //判断是否匹配
            if (c=='}'||c ==']'||c==')'){
                if (stack.empty()){
                    flag = false;
                    break;
                }
            }
            String x = stack.pop();
            if (x.charAt(0)!=c){
                 flag = false;
                 break;
            }
        }
        if (!stack.empty()){
            flag = false;

        }
        System.out.println(flag);
    }


}




true

3

b

b

f

a

----------------------------

Exception in thread "main" java.util.EmptyStackException

at java.util.Stack.peek(Stack.java:102)

at java.util.Stack.pop(Stack.java:84)

at com.itbaizhan.StackTest.symmetry(StackTest.java:69)

at com.itbaizhan.StackTest.main(StackTest.java:36)

这是怎么了

JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2168楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2170楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2171楼

老师好,请看一下:

问题:无法获取Goods类的brand属性

商品类:

package cn.sxt.thread;

public class Goods {
	private String name;
	private String brand;
	private boolean flag;//标志位,用来表示是否存在商品  flag = true表示有商品
	public Goods(String name, String brand) {
		super();
		this.name = name;
		this.brand = brand;
	}
	public Goods() {
		super();
		// TODO Auto-generated constructor stub
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand = brand;
	}
	public boolean isFlag() {
		return flag;
	}
	public void setFlag(boolean flag) {
		this.flag = flag;
	}
	//同步的用来获取商品的方法,用来避免数据错乱,线程通信notify和wait用来防止数据重复
	public synchronized void get() {
		if (!flag) {//相当于flag = false没有商品,消费者等待
			try {
				super.wait();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		//消费者线程被唤醒,开始消费
		System.out.println("消费者消费:"+this.getBrand()+"\t"+this.getName());
		//通知生产者生产
		super.notify();
		flag = false;//表示没有商品了
	}
	//同步方法用来生产商品,同步用来避免数据错乱,线程通信notify/wait用来防止数据重复生产或者消费
	public synchronized void set(String Brand,String name) {
		if (flag) {//表示有商品,生产等待
			try {
				super.wait();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		//生产者线程被唤醒,开始生产
		this.name = name;
		this.brand = brand;
		System.out.println("生产者生产:"+this.getBrand()+"\t"+this.getName());
		//通知消费者消费
		super.notify();
		flag = true;//表示 有商品
		
	}
}

生产者:

package cn.sxt.thread;

public class Producer implements Runnable {
	private Goods g;
	
	public Producer(Goods g) {
		super();
		this.g = g;
	}

	public Producer() {
		super();
		// TODO Auto-generated constructor stub
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=0;i<10;i++) {
			try {
				Thread.sleep(300);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			if (i%2==0) {//偶数				
				g.set("旺仔", "小馒头");
			}else {
				g.set("哇哈哈", "矿泉水");
			}
			
		}
	}
	
}

消费者:

package cn.sxt.thread;

public class Consumer implements Runnable {
	private Goods g ;

	public Consumer(Goods g) {
		super();
		this.g = g;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=0;i<10;i++) {
			try {
				Thread.sleep(300);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			g.get();
		
		}
	}
	
}

测试类:

package cn.sxt.thread;

public class TestGoods {
	public static void main(String[] args) {
		//创建 商品类
		Goods g  =  new Goods();
		//创建生产者,消费者线程
		Producer p = new Producer(g);
		Consumer c = new Consumer(g);
		//启动线程
		new Thread(p).start();
		new Thread(c).start();
	}
}

运行效果截图:

image.png


JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2172楼

老师请问一下我的代码是跟着老师一步一步敲的为啥我登录结果是这样的,bjsxt当时换成xx登录成功了一次,在次登录的时候又不行了,请老师解答一下

package com.bjsxt.server;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import com.bjsxt.servlet.Servlet;
import com.bjsxt.util.IOCloseUtil;
/**
 * 服务器,用于启动和停止服务
 * @author Administrator
 *
 */
public class Server {
 private ServerSocket server;
 public static void main(String[] args) {
  Server server=new Server();//创建服务器对象
  server.start();
 }
 public void start(){
  this.start(8888);
 }
 public void start(int port){
  try {
   server=new ServerSocket(port);
   this.receive(); //调用接收请求信息的方法
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 private void receive() {
  try {
   //(1)监听
   Socket client=server.accept();
   
   //封装请求信息
   Request req=new Request(client.getInputStream());
   
   /**做出响应*/
   /*StringBuilder sb=new StringBuilder();
   sb.append("HTTP/1.1").append(" ").append(200).append(" ").append("OK").append("\r\n");
   sb.append("Content-Type:text/html;charset=utf-8").append("\r\n");
   //内容
   String str="<html><head><title>响应结果</title></head><body>成功</body></html>";
   sb.append("Content-Length:"+str.getBytes("utf-8").length).append("\r\n");
   sb.append("\r\n");
   sb.append(str);
   
   //通过输出流发送出去
   BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
   bw.write(sb.toString());
   bw.flush();
   bw.close();*/
   Response rep=new Response(client.getOutputStream());
   Servlet servlet=WebApp.getServlet(req.getUrl());
   int code=200;
   if (servlet==null) {
    code=404;
   }
   //调用Servlet中的服务的方法
   try {
    servlet.service(req, rep);
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   rep.pushToClient(code);
   IOCloseUtil.closeAll(client);
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 public void stop(){
  
 }
package com.bjsxt.servlet;
import com.bjsxt.server.Request;
import com.bjsxt.server.Response;
/**
 * 是所有请求的Servlet的父类
 * 
 * @author Administrator
 *
 */
public abstract class Servlet {
 public void service(Request req,Response rep) throws Exception{
  this.doGet( req, rep);
  this.doPost( req, rep);
 }
 public abstract void doGet(Request req,Response rep) throws Exception;
 public abstract void doPost(Request req,Response rep) throws Exception;
}
package com.bjsxt.servlet;
import com.bjsxt.server.Request;
import com.bjsxt.server.Response;
public class LoginServlet extends Servlet{
 @Override
 public void doGet(Request req, Response rep) throws Exception {
   //获取请求参数
  String name=req.getParameter("username");
  String pwd=req.getParameter("pwd");
  
  if(this.login(name, pwd)){
   //调用响应中的构建内容的方
   rep.println(name+"登录成功");
  }else{
   rep.println(name+"登录失败,对不起,账号或密码不正确");
  }
  
 }
 private boolean login(String name,String pwd){
  if ("xx".equals(name)&&"123".equals(pwd)) {
   return true;
  }
  return false;
 }
 @Override
 public void doPost(Request req, Response rep) throws Exception {
  // TODO Auto-generated method stub
  
 }
 
}
package com.bjsxt.server;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import com.bjsxt.util.IOCloseUtil;
/**
 * 响应
 * @author Administrator
 *
 */
public class Response {
 private StringBuilder headInfo;//响应头
 private StringBuilder content;//响应内容
 private int length;//响应内容的长度
 //流
 private BufferedWriter bw;
 
 //两个常量,换行和空格
 private static final String CRLF="\r\n";//换行
 private static final String BLANK=" ";//空格
 
 //构造方法
 public Response() {
  headInfo=new StringBuilder();
  content=new StringBuilder();
  
 }
 //带参构造方法
 public Response(OutputStream os){
  this();//调用本类的无参构造方法
  try {
   bw=new BufferedWriter(new OutputStreamWriter(os, "utf-8"));
  } catch (UnsupportedEncodingException e) {
   headInfo=null;
  }
  
 }
 //构造正文部分
 public Response print(String info){
  content.append(info);
  try {
   length+=info.getBytes("utf-8").length;
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return this;
 }
 public Response println(String info){
  content.append(info).append(CRLF);
  try {
   length+=(info+CRLF).getBytes("utf-8").length;
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return this;
 }
 
 //构造响应头
 
 private void createHeadInfo(int code){
  headInfo.append("HTTP/1.1").append(BLANK).append(code).append(BLANK);
  switch (code) {
  case 200:
   headInfo.append("OK");
   break;
  case 500:
   headInfo.append("SERVER ERROR");
   break;
  default:
   headInfo.append("NOT FOUND");
   break;
  }
  headInfo.append(CRLF);
  headInfo.append("Content-Type:text/html;charset=utf-8").append(CRLF);
  headInfo.append("Content-Length:"+length).append(CRLF);
  headInfo.append(CRLF);
 }
 /**
  * 推送到客户机的浏览器
  * @param code
  */
 public void pushToClient(int code){
  if (headInfo==null) {
   code=500;
  }
  try {
   //调用本类中的构造响应头
   this.createHeadInfo(code);
   bw.write(headInfo.toString());
   bw.write(content.toString());
   bw.flush();
   this.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 public void close(){
  IOCloseUtil.closeAll(bw);
 }
}

1576990078(1).jpg

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2173楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2174楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 2175楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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