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

为什么我的  Scanner.in中的in报错

package in.sxt.时间类;


import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Scanner;


public class 日历1 {

public static void main(String[]arge) {

/*因为需要键盘的输入,所以需要Scanner,所以创建对象input*/

Scanner input = new Scanner(Scanner.in);

System.out.println("请输入一个日期:yyyy-MM-dd");

String str=input.next();//把键盘输入的值放入str中;

//创建DateFormat对象,将String(字符串)转换成Date()时间类;

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

Date d=df.parse(str);//会生成一个Date(时间类)df的对象d

//Date对象所表示的时间设置到Calendar中,这样从键盘录入的时间就设置过来了

Calendar cal=new GregorianCalendar();

cal.setTime(d);

//获取输入的日期中的date部分

int nowDate=cal.get(Calendar.DAY_OF_MONTH);//获取每日的时间

//将日期设置成1号

cal.set(Calendar.DAY_OF_MONTH,1);

//获取1号的是星期几

int dayofweek=cal.get(Calendar.DAY_OF_MONTH);

System.out.println("日\t一\t二\t三\t四\t五\t六");//这是打印月历上面个的周几

//for循环,是周几就空几个

for(int i=1; i<dayofweek;i++){     //是周几就往后推几个

System.out.print(i+"\t");

}

//获取输入的月份的最后一天

int maxday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

for(int i=1;i<maxday;i++) {//利用for循环打印每月的天数(到每月的最后一天),加括号下面的用到i值

System.out.print(i+"\t");

//如果到输出的时间,就加上星

if(i==nowDate) {

System.out.println("*");

}

if(cal.get(Calendar.DAY_OF_WEEK)==7){     //if语句就是让到每周的第七天(周六)就换行

System.out.println();

}

cal.add(Calendar.DAY_OF_MONTH, 1);   //循环每循环增加一次,就会增加一天

}

}

}

这是报的错

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

in cannot be resolved or is not a field


at in.sxt.时间类.日历1.main(日历1.java:13)



JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 3527楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 3531楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 3532楼

一、跟着老师敲的代码运行出来浏览器没有响应

package com.bjsxt.server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;



public class Server3 {
	public static void main(String[] args) {
		String CRLF="/r/n";
		String BLANK=" ";
		//(1)创建ServerSocket对象
		ServerSocket server=null;
		//(2)监听是否有客户端发来请求连接
		Socket client = null;
		InputStream is = null;
		
		try {
			
			server = new ServerSocket(8888);
			client = server.accept();
			//获取来自浏览器的请求信息
			is = client.getInputStream();
			byte []buf = new byte[20480];
			int len=0;
			len = is.read(buf);
			System.out.println(new String(buf,0,len));
			/**
			 * 对web浏览器做出响应信息
			 */
			StringBuilder sb = new StringBuilder();
			StringBuilder sbContent = new StringBuilder();//响应的文本
			sbContent.append("<html><head><title>响应结果</title></head>");
			sbContent.append("<body>登陆成功</body></html>");
			//(1)拼接响应头
			sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("OK");
			sb.append(CRLF);//换行
			sb.append("Content-Type:text/html; charset=utf-8");
			sb.append(CRLF);//换行
			sb.append("Content-Length:").append(sbContent.toString().getBytes().length).append(CRLF);
			sb.append(CRLF);//换行,代表响应头与响应正文之间的空行
			sb.append(sbContent);
			
			
			//通过流输出
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"GBK"));
			bw.write(sb.toString());
			bw.flush();
			bw.close();
			
			 
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
		//(6)关闭流
		try {
			IOClose.CloseAll(is,client,server);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}
	}
}

二、html代码

<html>
	<head>
		<title>我的第一个html</title>
	</head>
	<body>
		<h1>Hello World</h1>
		<form action="http://localhost:8888/index.html" method="post">
			<p>用户名:<input type="text" id="uname" name="username"</p>
			<p>密码:<input type="password" id="pwd" name="password"></p>
			<p><input type="submit" value="登陆"/></p>
		</form>
	</body>
</html>


三、运行截图

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 3533楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 3534楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 3536楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 3537楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 3538楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 3539楼

public class CopyDirectory{
	public static void main(String[] args) {
		copyDirectory(new File("G:\\电子大赛文件\\copyfile"),new File("D:\\copyfile"));
	}
	
	//复制文件夹的方法
	public static void copyDirectory(File src,File dir) {
		if(!dir.exists()) dir.mkdir(); //目的地是否有dir目录, 没有就创建一个文件夹
		File[] files = src.listFiles();
		
		for(File file:files) {
			if(file.isFile()) { //如果当前File对象是文件  则直接进行拷贝文件
				//new File(src +"\\" + file.getName()) 通过构造方法,创建每一个文件(目录)对象
				copyFile(new File(src +"\\" + file.getName()),new File(dir +"\\" + file.getName()));
			}else {  //如果当前File对象是目录 通过递归调用 实现多层级复制
				copyDirectory(new File(src +"\\" + file.getName()),new File(dir +"\\" + file.getName()));
			}
		}
	} 
	
	//复制一个文件
	/**
	 * @param src
	 * @param dir
	 */
	public static void copyFile(File src,File dir) {
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;
		
		try {
			bis = new BufferedInputStream(new FileInputStream(src));
			bos = new BufferedOutputStream(new FileOutputStream(dir));
			byte[] b = new byte[1024];  // 创建byte数组的中转站,缓存为1024byte
			int len;  // 接受read()方法的返回值
			 
			while((len = bis.read(b)) != -1) {
				bos.write(b); //写出byte数组的数据
				bos.flush();
			}

		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		if(bos == null) {
			try {
				bos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(bis == null) {
			try {
				bis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
	
}

老师,在复制文件的代码中,对于

          while((len = bis.read(b)) != -1) {

bos.write(b); 

bos.flush();

}

如果循环条件写成 while(len = bis.read(b) != -1) { }程序会报错。java程序的执行顺序是 从左到右、从上到下。去掉括号不影响程序执行顺序啊,为什么就会报错呢?

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

课程分类

百战程序员微信公众号

百战程序员微信小程序

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