湖北师范大学java习题汇编(超详细!已经进行了章节划分)

2023-05-16

表达式和流程控制语句

1.验证歌德巴赫猜想。一个充分大的偶数(大于或等于6)可以分解为两个素数之和。 试编程序,将 6至50之间全部偶数表示为两个素数之和。

package kkkk;
public class aaa {
	public int isprime(int n)/*判断n是否为素数的函数*/ { 
		int x=0;
		for(int j=2;j<n;j++) if(n%j==0) { 
		x=0; break; }else x=1;
		return x;
		}
	public static void main(String[] args) {
			// TODO Auto-generated method stub
		    aaa b=new aaa();
		    for(int n=6;n<=50;n+=2) {
		    	for(int i=3;i<=(n/2);i++) {
		    		if(b.isprime(i)!=0&&b.isprime(n-i)!=0)
		    			System.out.println(n+"可以写成"+i+"+"+(n-i));
		    	}
		    }
			 }
		}

2.两位数13和62具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变, 即1362=3126。 编程序求共有多少对这种性质的两位数(个位与十位相同的不在此列,如11、22,重复出现的不在此列,如 1362与6213)

package yzp2;
public class fish {
public static void main(String[] args) {
		// TODO Auto-generated method stub
   int sum=0;
   for(int i=11;i<100;i++) {
	   for(int j=11;j<100;j++) {
		   if(i%10==0||j%10==0)continue;
		   if(i%10==i/10||j%10==j/10)continue;
		   if(i>=j)continue;
		   if(i*j==(i%10*10+i/10)*(j%10*10+j/10))
		   {System.out.println(i+" "+j);sum++;}
	   }
   }
   System.out.println("共有:"+sum+"个");
	}
}

3.输入1到7之间的某个整数,输出相应的星期:Monday、 Tuesday 等等,用switch语句实现。

package yzp3;
import java.util.Scanner;
public class day {
public static void main(String[] args) {
		// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
int a=input.nextInt();
String today;
switch(a){
	case 1:today="monday";break;
	case 2:today="tuseday";break;
	case 3:today="wednesday";break;
	case 4:today="thursday";break;
	case 5:today="friday";break;
	case 6:today="saturday";break;
	case 7:today="sunday";break;
	default:today="wrong day";
}
   System.out.print(today);
	}
}





数组

1.有M个人围成一圈,每人一个的编号(1.2.3…M),从第一个人数起,报到N时这 个人就出圈。再继续数,数到N时这个人又出圈。直到只剩下一个人为止,输出出圈 人的顺序。M、N从键盘输入。

package yzp;
import java.util.Scanner;
public class mongkey {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner A=new Scanner(System.in);
		int M=A.nextInt();
		int N=A.nextInt();
        int a[]=new int[M];
        int p=0;
         for(int i=0;i<M;i++) {
	            a[i]=1;
  }
          for(int j=0;j<M;j++) {
        	p++; if(a[j]==0)p--;if(p==N) 
        	 {p=0;a[j]=0;System.out.println(j+1); }
                if(j==M-1)j=-1;      	 
        	 }
          
         }
        }

  1. 打印如下形式的杨辉三角形
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1

    输出前10行。
package how;
public class in {
public static void main(String[] args) {
		// TODO Auto-generated method stub
int a[][]=new int[10][10];
cp:for(int i=0;i<10;i++) {
	for(int j=0;j<10;j++) {
		if(j==0||i==j)a[i][j]=1;
		else if(j>i) {System.out.println();continue cp;}
		else a[i][j]=a[i-1][j]+a[i-1][j-1];
		System.out.print(a[i][j]+" ");
	}
}
	}
}

3.编写一个程序打印出有10个元素的数组a中最大值和最小值。

package how;
public class in {
public static void main(String[] args) {
		// TODO Auto-generated method stub
int a[]=new int[10];
for(int i=0;i<10;i++) {
	a[i]=(int)(Math.random()*10);
	System.out.print(a[i]+" ");
}
System.out.println();
int max=a[0];
int min=a[0];
for(int i=1;i<10;i++) {
	if(a[i]>max)max=a[i];
	if(a[i]<min)min=a[i];
}
System.out.println("max="+max+" min="+min);
	}
}

4.输出一个保存在二维数组中3*3矩阵,并求对角线元素之和。

package how;
public class in {
public static void main(String[] args) {
		// TODO Auto-generated method stub
int [][]a=new int[3][3];
int sum=0;
for(int i=0;i<3;i++)
	for(int j=0;j<3;j++) {
		a[i][j]=(int)(Math.random()*10);
		System.out.print(a[i][j]+" ");
		if(j==2)System.out.println();
		if(i==j||i+j==2)sum=sum+a[i][j];
	}
System.out.print("sum="+sum);
}
}

5.编写一个模拟的Java发牌程序,要求将两副牌,也就是108张,发给4个人,并留 8张底牌,最后输出底牌和每个人手中的牌。

package fapai;
import java.util.Arrays;
public class lkj {
public static void main(String[] args) {
		int[][]a=new int[4][25];
		int []n=new int[108];

		for(int i=0,j=1;i<108;i=i+2) {
			n[i]=j;
			n[i+1]=j;
			j++;
		}
		
		f(a,n,0,0);
	}
	private static void f(int[][]a, int[] n, int k,int o) {
int i;
		for(i=k;i<k+25;i++) {
			int m=(int)(Math.random()*(108-i));
				a[o][i-k]=n[m];
				System.arraycopy(n, m+1, n, m, n.length-m-1);
				}
		if(o<3)f(a,n,i,o+1);
		else {
			for(int j=0;j<4;j++) {
				System.out.println("第"+(j+1)+"人手里的牌为:"+Arrays.toString(a[j]));
			}
			for(int j=0;j<8;j++) {
				if(j==0)System.out.print("剩余的8张底牌为:"+"[");
				else if(j<7)System.out.print(n[j]+", ");
				else System.out.printf("%d]",n[j]);
			}
		}
	}

}





类和对象

  1. 设计一个自动铅笔类AutoPencil,有1个属性boolean penPoint(笔尖是否伸出),有4个函数:
    (1)构造函数AotoPencil(),将penPoint置为false
    (2)按压操作函数void knock(),将penPoint置反
    (3)获取笔尖状态函数 boollean getPenPoint()
    (4)main函数
    创建对象并对实例对象进行按压操作,显示笔尖的状态。
package pen;
public class AutoPencil {
	private boolean penPoint;
	public AutoPencil() {
		penPoint=false;
    }
public void knock() {
	penPoint=!penPoint;	
	}
	public Boolean getPenPoint() {
		return penPoint;
	}
	public static void main(String[] args) {
		AutoPencil atPen=new AutoPencil();
		System.out.println(atPen.getPenPoint());
		atPen.knock();
System.out.println(atPen.getPenPoint());
}
}

2.设计一个汽车类Car,有2个属性车主owner和油量oil,有7个函数:
(1)构造函数Car(String owner,double oil)
(2)构造函数Car(String owner),油量置为0
(3)加油操作函数void addOil(double oil)
(4)行驶操作函数void drive(int distance)
假设每100公里的耗油量为定值(自己设置),根据行驶的公里数更新油量。
(5)获得车主信息函数String getOwner()
(6)获得油量函数double getOil()
(7)main函数
创建对象并对实例对象进行加油、行驶操作,显示车主、油量。

package knigt;
public class Car {
   private String owner;
   private double oil;
   public Car(String owner,double oil){
	   this.owner=owner;
	   this.oil=oil;
   }
   public Car(String owner){
	   this.owner=owner;
	   oil=0;
   }
   public void addOil(double oil) {
	   this.oil=this.oil+oil;
   }
   public void drive(int distance) {
	   oil=oil-15*distance;
   }
   public String getOwner() {
	   return owner;
   }
   public double getOil() {
	   return oil;
   }
	public static void main(String[] args) {
         Car ok=new Car("张帅",10);
         Car in=new Car("卢泽龙");
         System.out.println(ok.getOwner());
         System.out.println(ok.getOil());
         System.out.println(in.getOwner());
         System.out.println(in.getOil());
         in.addOil(60);
         System.out.println(in.getOwner()+"加油后有:"+in.getOil());
         in.drive(2);
         System.out.println(in.getOwner()+"行驶后有:"+in.getOil());
         }
}

3.编写Java程序模拟简单的计算器。 定义名为Number的类,其中有两个私有的整型数据成员x和y。有7个函数:
(1)构造函数Number(int x,int y)
(2)加法运算函数 int addition(int x,int y)
(3)减法运算函数 int subtration(int x,int y)
(4)乘法运算函数 int multiplication(int x,int y)
(5)除法运算函数 int division(int x,int y)
另外编写一个测试类,对Number类进行测试。

package pen;
class Number{
	private int x,y;
	  Number(int x,int y){
		  this.x=x;
		  this.y=y;
	  }
	  public int addition(int x,int y) {
		  return x+y;
	  }
	  public int subtration(int x,int y) {
		  return x-y;
	  }
	  public int multiplication(int x,int y) {
		  return x*y;
	  }
	  public int division(int x,int y) {
		  return x/y;
	  }

}
public class shixian {

	public static void main(String[] args) {
		Number A=new Number(8,2);
		System.out.println(A.addition(8,2));
		System.out.println(A.subtration(8,2));
		System.out.println(A.multiplication(8,2));
		System.out.println(A.division(8,2));
}
}

  1. 定义长方形类Rectangle,含:
    (1)属性
    int width;
    int height;
    (2)方法
    Rectangle():宽、高默认值为1;
    Rectangle(int val):宽、高均为参数值;
    Rectangle(int width,int height):
    Double getSquare():计算面积;
    Double getPerimeter():计算周长;
    另外编写测试类进行测试。
package pen;
class Rectangle{
	int width;
	int height;
	Rectangle(){
		width=1;
		height=1;
	}
	Rectangle(int val){
		width=val;
		height=val;
	}
	Double getSquare() {
		return (double) (width*height);
	}
	Double getPerimeter() {
		return (double)(2*width+2*height);
	}
}
public class shixian {

	public static void main(String[] args) {
	Rectangle A=new Rectangle(6);
	System.out.println(A.getSquare());
	System.out.println(A.getPerimeter());
}
}

  1. 定义一个时间类MyTime,有三个属性hour,minute,second。为MyTime类定义构造方法,以便创建对象时初始化成员变量。除了构造函数外,还要创建以下方法:
    (1)nextSecond( ):时间经过1秒
    (2)nextMinute( ):时间经过1分
    (3)nextHour( ):时间经过1小时
    (4)prevSecond( ):前1秒
    (5)prevMinute( ):前1分
    (6)prevHour( ):前一小时
    (7)display( ):以HH:MM:SS格式显示时间
    另外编写测试类,进行测试。
package pen;
class MyTime{
	private int hour,minute,second;
	MyTime(int x,int y,int z){
		hour=x;
		minute=y;
		second=z;
	}
	public void nextSecond() {
		if(second!=59)second+=1;
		else 
		{
			second=0;if(minute!=59)minute+=1;
			else {
				minute=0;if(hour!=23)hour+=1;
				else hour=0;
			}
		}
	}
	public void nextMinute() {
		if(minute!=59)minute+=1;
		else {
			minute=0;if(hour!=23)hour+=1;
			else hour=0;
		}
	}
	public void nextHour() {
		if(hour!=23)hour+=1;
		else hour=0;
	}
	public void preSecond() {
		if(second!=0)second-=1;
		else
		{
		second=59;if(minute!=0)minute-=1;
		else 
		{ minute=59;if(hour!=0)hour-=1;
	    else hour=23;
		}
		}
	}
	public void prevMinute() {
		if(minute!=0)minute-=1;
		else 
		{ minute=59;if(hour!=0)hour-=1;
	    else hour=23;
		}
	}
	public void prevHour() {
		if(hour!=0)hour-=1;
	    else hour=23;
	}
	public void display(){
		System.out.println(hour+":"+minute+":"+second);
	}
}
public class shixian {

	public static void main(String[] args) {
	MyTime A=new MyTime(22,0,59);
	A.prevMinute();
	A.display();
	A.nextSecond();
	A.display();	
	}

}

6.编写程序使用复数类Complex验证两个复数 2+2i 和3+3i 相加产生一个新的复数5+5i 。复数类Complex满足如下要求:
(1)属性
int realPart :复数的实部;
int imaginPart:复数的虚部;
(2)方法
Complex( ) : 构造方法,将复数的实部和虚部都置0;
Complex( int r , int i ) :
Complex complexAdd(Complex a) : 将当前复数对象与形参复数对象相加,所得的结 果仍是一个复数值,返回给此方法的调用者。
String toString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中 a 和 b分别为实部和虚部的数据。
另外编写一个测试类Test,对Complex类进行测试。

package pen;
class Complex{
	int realPart;
	int imaginPart;
	Complex(){
		realPart=0;
		imaginPart=0;
	}
	Complex(int r,int i){
		realPart=r;
		imaginPart=i;
	}
	Complex complexAdd(Complex a) {
		realPart=realPart+a.realPart;
		imaginPart=imaginPart+a.imaginPart;
		return a;
	}
	public String toString() {
		return realPart+"+"+imaginPart+"i";
	}
}
public class Test {

	public static void main(String[] args) {
  Complex A=new Complex(1,2);
  Complex B=new Complex(4,6);
  A.complexAdd(B);
  System.out.println(A.toString());
  
	}
}





继承与多态

实验目的

  1. 使用类来封装对象的属性和功能。
  2. 掌握抽象类、接口的使用方法。
  3. 掌握类的继承性、子类对象的创建过程、成员变量的继承与隐藏、方法的继承与 重写。
    实验学时 2学时
    实验内容
  4. 设计五个类,类之间的关系如下:
    在这里插入图片描述

在App类的main()中,创建一个Compute类对象、一个Circle类对象和一个Rectangle类对象,用Circle类的area方法计算圆的面积,用Rectangle类的area方法计算长方形的面积,用Compute类的compute方法计算圆、长方形的面积。

package Ko;
interface shape{
	double pi=3.14;
	double area();
}
class compute{
	public double computeArea(shape s) {
		return s.area();
	}
}
class circle implements shape{
	int radius;
	circle(int radius){
		this.radius=radius;
	}
	public double area() {
		return radius*radius*pi;
	}
}
class Rectangle implements shape{ 
	int width;
	int hight;
	Rectangle(int width,int hight){
		this.width=width;
		this.hight=hight;
	}
	public double area() {
		return width*hight;
	}
}
public class App {

	public static void main(String[] args) {
	compute A=new compute();
	circle B=new circle(3);
	shape C=new Rectangle(6,4);
	System.out.println("Rectangle area:"+C.area());
	System.out.println("circle area:"+A.computeArea(B));
	System.out.println("circle area:"+B.area());

	}

}

  1. 设计六个类,类之间的关系如下
    在这里插入图片描述
    (1)App类的main( )
    1.1创建一个Paint对象paint
    1.2 显示作品列表
    ==作品列表=
  2. 圆形
  3. 矩形
  4. 小兔子
    ======================
    请选择:
    1.3 根据选择,显示不同的作品
    1.3.1 画圆
    先创建一个Circle对象circle,将circle设置为paint对象要显示的作品, 然后调用对象paint的draw方法显示作品。
    1.3.2 画矩形
    先创建一个Rectangle对象rect,将rect设置为paint对象要显示的作品, 然后调用对象paint的draw方法显示作品。
    1.3.3 画小兔子
    先创建一个Rabit对象rabit,将rect设置为paint对象要显示的作品,然 后调用对象paint对象的draw方法显示作品。
    (2)Paint类中的draw( )
    ①显示作品名、作者,如:
    作品:圆形
    作者:小明
    ②调用成员变量art的draw方法显示作品。
    (3)Circle类中的draw( )
    先输入圆的半径,然后用“”打印一个圆(近似)。
    (4)Rectangle类中的draw( )
    先输入矩形的宽和高,然后用“
    ”打印一个矩形。
    (5)Rabit类中的draw( )
    输出如下图形:
    / ) / )
    (- -) ) o
    | | | |
package code1;
import java.util.Scanner;
abstract class AsciiArt{
	String title;
	String author;
	void AsciiArt(String title,String author) {
		this.title=title;
		this.author=author;
	}
	abstract public void draw();
	String getTitle() {
		return title;
	}
	void setTitle(String title) {
		this.title=title;
	}
	String getAuthor() {
		return author;
	}
	void setAuthor(String author) {
		this.author=author;
	}
	
}
class Paint{
	AsciiArt art;
	void setArt(AsciiArt art) {
	 this.art=art;
	}
	void draw() {
		System.out.println("作品:"+art.title);
		System.out.println("作者:"+art.author);
		art.draw();
	}
}
 class Circle extends AsciiArt{
	int radius;
	Circle(String title,String author){
		this.title=title;
		this.author=author;
	}		
	public static int getx(int r,int y)
	{
		return (int)Math.round(r-Math.sqrt(r*r-(r-y)*(r-y)));
	}
	public  static String getS(int s) {
		String space="";
		for(int i=0;i<s;i++)
		{
			space+=" ";
		}
		return space;
	}
	public void draw() {
		int x=0,y=0,r=0;
		System.out.print("请输入半径:");
		Scanner input=new Scanner(System.in);
		r=input.nextInt();
		for(int i=0;i<=2*r;i+=2) {
		x=getx(r,y);
		 System.out.print(getS(x));
		 System.out.print("*");
		 System.out.print(getS(2*(r-x)));
		 System.out.print("*");
		 System.out.print('\n');
		 y+=2;
		 		
		}
	}
	
}
class Rectangle extends AsciiArt{
	int width;
	int height;
	Rectangle(int width,int height){
		this.width=width;
		this.height=height;
	}
	public void draw() {
		for(int i=0;i<height;i++) {
			for(int j=0;j<width;j++) {
			if(i==0||i==height-1||j==0||j==width-1)	
			System.out.print("*");
			else System.out.print(" ");
			}
			 System.out.println(); 
	}	
}
}
class Rabit extends AsciiArt{
	Rabit(){
		title="Rabit";
		author="luzelong";
	}
	public void draw() {
		System.out.println("/)/)");
		System.out.println("(- -) )o");
		System.out.println("   ||  ||");
	}
}
public class App {
public static void main(String[] args) {
	int p;
	AsciiArt A=new Rectangle(5,10);
	AsciiArt B=new Rabit();
	AsciiArt C=new Circle("aaa1","aaa2");
	A.setTitle("bbb1");
	A.setAuthor("bbb2");
	Paint a=new Paint();
	a.setArt(A);
	Paint b=new Paint();
	b.setArt(B);
	Paint c=new Paint();
	c.setArt(C);
  Paint paint=new Paint();
  System.out.println("--------------------");
  System.out.println("1.圆形");
  System.out.println("2.矩形");
  System.out.println("3.小兔子");
  System.out.println("--------------------");
  System.out.print("请选择:");
  Scanner io=new Scanner(System.in);
  p=io.nextInt();
  switch(p) {
  case 1:c.draw();break;
  case 2:a.draw();break;
  case 3:b.draw();break;
  default:System.out.println("输入有误!");
  }
  
}
}




Java标准类库

实验目的
1.了解Java中一些常用的基本类库的结构和主要功能。
2.掌握Java中Integer类、String类、StringBuffer类的使用方法。
实验学时 2学时
实验内容

  1. 输入两个字符串str1、str2,统计字符串str2出现在str1中的次数。
    如:str1=”aaas lkaaas” ,str2=” as” ,则应输出 2
package sixoe;

import java.util.Scanner;

public class Cout {

	public static void main(String[] args) {
	     Scanner input=new Scanner(System.in);
	     int sum=0;
		System.out.print("请输入第一个字符串:");
       String str1=input.nextLine();
      System.out.print("请输入第二个字符串:");
        String str2=input.nextLine();
        int lo=str1.indexOf(str2);
      while(lo!=-1) {
    	  sum++;
    	  lo=str1.indexOf(str2,lo+1);
      }
      System.out.println("第二个字符串在第一个字符串中出现了"+sum+"次!");
      
	}

}

2.输入一行字符串(只有26个字母构成),统计有多少个字母(不区分大小写)及每 个字母出现的个数。

package sixtwo;
import java.util.Scanner;
public class TJ {

	public static void main(String[] args) {
		
    Scanner input=new Scanner(System.in);
    String str=input.nextLine();
    StringBuffer k=new StringBuffer(str);
    int length=k.length();
    System.out.println("共有"+length+"个字母!");
    String a;int index,sum;
 for(int i=0;i<k.length();) {
	sum=0;
   a=k.substring(0,1);
    index=k.indexOf(a);
    
	 while(index!=-1) {
		 sum++;
		 k.deleteCharAt(index);
		 index=k.indexOf(a,index);
	 } 
	 System.out.println(a+"字母有"+sum+"个");
	
 }
	}

}

3.输入一个数字串,先将它转换为整数,再分别以2进制、8进制、16进制输出。

package six.three;

import java.util.Scanner;

public class kkk {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("请输入一个数字字符串:");
String a=input.nextLine();
int b=Integer.parseInt(a);
System.out.println("二进制为:"+Integer.toBinaryString(b));
System.out.println("八进制为:"+Integer.toOctalString(b));
System.out.println("十六进制为:"+Integer.toHexString(b));


	}

}

4.输入包含一个非负整数a(0<=a<=2147483647),将a转换成16进制并输出。

package six.four;

import java.util.Scanner;

public class uj {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
  Scanner input=new Scanner(System.in);
    int a=input.nextInt();
    System.out.println("转化为十六进制为:"+Integer.toHexString(a));
  
	}

}

5.输入一个十六进制数,输出对应的八进制数。

package six.sevn;

import java.util.Scanner;

public class lkhj {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print("请输入一个十六进制数字");
   Scanner input=new Scanner(System.in);
  String six=input.nextLine();
  int a=Integer.parseInt(six,16);
 System.out.println(Integer.toOctalString(a));
	}

}





Java异常处理

实验目的
1.熟悉Java中异常类库的结构和主要功能。
2.掌握Java中异常处理机制、自定义异常。
实验学时 2学时
实验内容

  1. 编写一个程序自定义一个异常类,接收用户输入一个正整数,如果用户输入的不是一个正整数,则提示用户重新输入,直到输入正确为 止。
package play;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Out {
	public void input() {
		Scanner s=new Scanner(System.in);
		System.out.println("请输入一个正整数:");
		try {
			int a=s.nextInt();
			if(a<0)throw new InputMismatchException();
			System.out.println("输入正确!");
		}catch (InputMismatchException e) {
			System.out.println("输入的不是正整数,请重新输入:");
		    input();
		}
	}
	
	public static void main(String[] args)  {
		Out t=new Out();
		t.input();
  }
  
}





输入输出处理

实验目的

  1. 理解Java技术体系中“流“的概念。
  2. 掌握字节流和字符流的常用类及使用方法。
  3. 掌握Java程序对文件的基本操作。
    实验学时 2学时
    实验内容
    1.用不同的方法(FileReader/FileWriter、BufferedReader/BufferedWriter、FileInputStream /FileOutputStream、BufferedInputStream/BufferedOutputStream)编写文本文件拷贝程序,将一个文本文件的数据拷贝到另一个文件中去。
    要求:至少用2中不同的方法
    2.教材8.7节实训任务,实现文件的分割与合并,还可以添加图形用户界面。
    1.方法一:
package IO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Copy {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
int size;
FileInputStream f=new FileInputStream("src/IO/Copy.java");
FileOutputStream fout=new FileOutputStream("copy-of-file.txt");
size=f.available();
int n=size/10;
byte b[]=new byte[n];
int count=0;
while((count=f.read(b,0,n))!=-1) 
	fout.write(b,0,count);
System.out.println("拷贝成功!");
f.close();
fout.flush();
fout.close();
	}

}

方法2:

package IO;

import java.io.File;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class Copjy2 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
File file=new File("src/IO/Copjy2.java");
FileReader f=new FileReader(file);
FileWriter fout=new FileWriter("copy-of-file2.txt");
int n=(int)(file.length()/10);
char b[]=new char[n];
int count=0;
while((count=f.read(b,0,n))!=-1)
	fout.write(b,0,count);
System.out.println("拷贝成功!");
f.close();
fout.close();
	}

}

题2的代码如下

package IO;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileCutMerge {

	public static void main(String[] args) {
	FileCutMerge tool=new FileCutMerge();
	if((args==null)||(args.length!=2)) {
		tool.help();
	}else if(args[0].startsWith("-c")) {
		File f1=new File(args[1]);
		if(!f1.exists()) {
			System.out.println("指定的文件不存在");
		}
		int fileSize=Integer.parseInt(args[0].substring(2));
		try {
			tool.cut(f1,fileSize);
		}catch(Exception e) {
			e.printStackTrace();
		}
	}else if(args[0].equals("-m")) {
		String prefixname=args[1];
		File f=new File(".");
		File[] names=f.listFiles(new MyFilesFilter(prefixname));
		try {
			tool.merge(names);
		}catch(Exception e) {
			e.printStackTrace();
		}
	}else {
		
	}

	}
	public void help() {
		System.out.println("错误的命令行格式,正确的是:");
		System.out.println("FileCutMerge-c filename");
		System.out.println("或者");
		System.out.println("FileCutMerge-m filenameprefix");
	}
	public void cut(File file,int size)throws Exception{
		System.out.println("开始分割文件....");
		File parent=file.getParentFile();
		long fileLength=file.length();
		int filenum=(int)(fileLength/size);
		if(fileLength%size!=0) {
			filenum+=1;
		}
		String[] smallfilenames=new String[filenum];
		FileInputStream fin=new FileInputStream(file);
		byte []buf=new byte[size];
		for(int i=0;i<filenum;i++) {
			File outfile=new File(parent,file.getName()+"-"+i);
			FileOutputStream fout=new FileOutputStream(outfile);
			int cout=fin.read(buf);
			fout.write(buf,0,cout);
			fout.close();
			smallfilenames[i]=outfile.getName();
		}
		fin.close();
		System.out.println("分割后的文件如下:");
		for(int i=0;i<smallfilenames.length;i++) {
			System.out.println(smallfilenames[i]);
		}
		System.out.println("文件分割完成");
	}
public void merge(File[] files)throws Exception{
	System.out.println("开始合并文件...");
	String smallfilename=files[0].getName();
	int pos=smallfilename.indexOf("-");
	String tagetfilename="new-"+smallfilename.substring(0,pos);
	System.out.println("合并后的文件为:"+tagetfilename);
	File outFile=new File(files[0].getParentFile(),tagetfilename);
	FileOutputStream fout=new FileOutputStream(outFile);
	for(int i=0;i<files.length;i++) {
		FileInputStream fin=new FileInputStream(files[i]);
		int b;
		while ((b=fin.read())!=-1) {
			fout.write(b);
		}
		fin.close();
	}
	fout.close();
	System.out.println("合并文件完成。");
}
}
class MyFilesFilter implements FileFilter{
	String prefix="";
	public MyFilesFilter(String prefix) {
		this.prefix=prefix;
	}
	@Override
	public boolean accept(File f) {
		if(f.getName().length()>prefix.length()&&f.getName().startsWith(prefix)) {
			return true;
		}
		return false;
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

湖北师范大学java习题汇编(超详细!已经进行了章节划分) 的相关文章

  • ROS智能车实现darknet_ros检测物体

    文章目录 一 搭建智能车环境1 下载包以及编译1 1 下载源码包1 2 编译1 3 错误解决 xff08 1 xff09 controllers相关 xff08 2 xff09 driver base相关 xff08 3 xff09 ack
  • 使用Vant完成DatetimePicker 日期的选择器

    效果展示 xff1a 代码展示 xff1a lt template gt lt div id 61 34 date time picker 34 gt lt van button plain type 61 34 primary 34 64
  • 拜访谭浩强老先生

    本月 22日 邀请各大高校计算机专业的院长 教授 xff08 谭浩强 王移芝 陈明 杨小平 王立柱 郑莉 等等 xff09 前来我校参观指导 xff0c 尤其是对我们的 信息技术提高班 进行深入的了解 得知前几天中国计算机界泰斗级人物谭浩强
  • 使用Vant完成各种Toast提示框

    效果展示 xff1a xff08 1 xff09 使用前的需要安装Vant奥 参考博客 xff08 2 xff09 在main js里面引入Toast import Toast from 39 vant 39 Vue use Toast x
  • 使用Vant完成底部弹出框 ActionSheet 上拉菜单

    效果图 xff1a 代码展示 xff1a xff08 ActionSheet 上拉菜单 xff09 lt template gt lt ActionSheet 上拉菜单 gt lt div id 61 34 action sheet 34
  • vue项目总结,项目期间遇到的问题、难点等。【暂停更新】

    近期一直在做一个xxx中心的项目 xff0c 先来吐槽下内心的想法 xff0c 要开发的项目需求很不明确 xff0c 需求两周两周的更改 xff0c 感觉每天并没有特别多实际的产出 xff0c 总是感觉有点儿浪费时间 虽然这样 xff0c
  • http请求 状态码204

    今天在调试接口的时候遇到个问题 xff1a 一个请求走了两次 xff0c 一次204 xff0c 一次200 且 xff0c 请求204的 Request Method 是 OPTIONS 在网上查看资料后得知 xff0c 是因为跨域而引起
  • vue项目中,使用echarts完成 折线+多柱状图 (附完整代码)

    结果展示 xff1a 分析 xff1a xff08 1 xff09 在echarts里面的 series里面写三种柱状 43 一种折线图 xff08 2 xff09 该图谱也实现了自适应大小 xff0c 缩小放大浏览器界面 xff0c 柱状
  • vue 前端实现pdf下载.npm install html2canvas jspdf --save

    npm install html2canvas jspdf save 页面使用 lt div id 61 39 pdfDom 39 gt lt div gt lt el button 64 click 61 34 getPdf 39 pdf
  • vue 项目实现水印效果

    目录 xff08 1 xff09 新建 waterMark js文件 xff08 2 xff09 页面使用 xff08 1 xff09 新建引入 waterMark js文件 39 use strict 39 let watermark 6
  • 角度单位deg、grad、turn、rad

    xff08 1 xff09 deg属性 xff1a 度 xff1a deg xff08 全称 xff1a degress xff09 一个圆有360度 90deg 61 100grad 61 0 25turn 1 5707963267948
  • vscode 中的git的提交、合并、解决冲突

    xff08 1 xff09 如果本地文件有修改 xff0c 那么这里就会显示有几个文件被修改 xff0c 且修改的具体内容也是对比着显示 xff1a xff08 2 xff09 点击 相当于 git add 将文件放入暂存区 xff08 3
  • 解决【display:flex布局】遇上 【position: absolute / fixed 】的失效问题

    问题描述 xff1a 有个这样的页面 xff0c 页面是通过flex布局的 xff0c 现在想将头部 我的订单栏 固定 xff0c 那么我们第一反应就是添加定位呀 xff0c position fixed 但是问题来了 xff0c posi
  • 年度回忆录(2011.07----2011.12)

    日月穿梭 xff0c 时光荏苒 xff08 其实挺不想用这两个词开头的 xff0c 太土了 无奈词穷 xff0c 凑合着看吧 D xff09 上次总结的时候正是七月份 xff0c 半年过去了 xff0c 经历了很多 xff0c 学到了很多
  • 从零开始的树莓派生活(树莓派4B的组装与系统安装)

    一 组装 从X宝等平台购买的树莓派除了主板外一般带有散热片 电源 风扇 外壳等配件 xff0c 不同店家不同型号的套装稍有不同 xff0c 以我自己购买的树莓派4B为例 xff0c 组装步骤大致分为 xff1a 1 安装散热片 2 安装亚克
  • 五大适合STM32的嵌入式操作系统

    基于STM平台且满足实时控制要求操作系统 xff0c 有以下5种可供移植选择 分别为 Clinux C xff0f OS II eCos FreeRTOS和都江堰操作系统 djyos 下面分别介绍这五种嵌入式操作系统的特点及不足 1 Cli
  • [docker] Get https://registry-1.docker.io/v2/ 错误的解决方案

    出现此问题一般是因为镜像源在国外 网络问题导致 今天安装laradock的时候出现了 记录处理方法 把镜像源改为国内的即可 1编辑deamon文件 centOS 默认有此文件 Ubuntu下是没有的 创建即可 sudo vim etc do
  • 高通SDM845平台Sensor学习——3.SLPI(Physical Sensor)

    三 xff1a Sensor SLPI层代码分析 在学习SLPI侧代码前我们先了解下SEE的registry amp config registry 放在 persist sensors registry registry中 xff0c 它
  • PID算法原理 一简单的认识一下PID的三个参数的作用

    PID算法原理 一简单的认识一下PID的三个参数的作用 以下的内容是我通过查阅了资料和加上我对PID的理解的总结 xff0c 如果遇到有不对的地方 xff0c 还望指出 先上一张图PID控制的结构图 关于PID控制 xff0c 我相信很多小
  • UCOS-II的基本概念

    UCOS II 一 实时操作系统的概念 1 1 操作系统 操作系统是一种系统软件 xff0c 他在计算机硬件与计算机应用程序之间 xff0c 通过提供程序接口 xff0c 屏蔽了计算机硬件工作的一些细节 xff0c 从提高了应用程序的开发效

随机推荐

  • MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(2) Simulink模型调节

    MATLAB Simmechanics Simscape四旋翼无人机控制仿真 xff08 2 xff09 Simulink模型调节 MATLAB Simmechanics Simscape四旋翼无人机控制仿真 xff08 2 xff09 S
  • MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(3)无人机控制器设计

    MATLAB Simmechanics Simscape四旋翼无人机控制仿真 xff08 3 xff09 无人机控制器设计 MATLAB Simmechanics Simscape四旋翼无人机控制仿真 xff08 3 xff09 无人机控制
  • MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(4) 串级姿态控制

    MATLAB Simmechanics Simscape四旋翼无人机控制仿真 xff08 4 xff09 串级姿态控制 MATLAB Simmechanics Simscape四旋翼无人机控制仿真 xff08 4 xff09 串级姿态控制1
  • 年假总述

    假期结束了 xff0c 虽然只有短短的五天 xff0c 但是这期间看到了听到了很多事情 xff0c 自己也想了很多 xff0c 以流水账的形式写一写 xff0c 也算是一种回忆吧 与姥爷聊教育 姥爷是高中的退休教师 xff0c 这次回去和姥
  • 烟台大学参加2011移动开发者大会和参观CSDN

    第一天 每年一度的中国移动开发者大会如期举行 xff0c 这次在潘永强老师的帮助下 xff0c 幸运的获得了此次大会的门票 xff0c 激动万分 xff0c 这是我们第一次北京之行 xff0c 带着无限的幻想和憧憬 xff0c 踏上了前往北
  • Linux的信号量

    信号量 xff08 semaphore xff09 与已经介绍过的 IPC 结构不同 xff0c 它是一个计数器 信号量用于实现进程间的互斥与同步 xff0c 而不是用于存储进程间通信数据 1 特点 1 信号量用于进程间同步 xff0c 若
  • 21 kubesphere安装部署

    文章目录 一 kubersphere1 KuberSphere简介2 全栈的 Kubernetes 容器云 PaaS 解决方案3 为什么选择 KubeSphere xff1f 4 主要功能 二 kubespshe 安装 xff08 Kube
  • 关于AlreadyExistsError: Another metric with the same name already exists.的解决方案

    这项错误发生在我刚安装完tensorflow xff0c 想import keras包的时候发生了如下的错误 xff1a Tensorflow python framework errors impl AlreadyExistsError
  • uC/OSIII在Cortex-M3的任务切换和中断退出分析

    uC OSIII在任务中执行OSSched相关的函数和在中断退出后都会开始执行调度 xff0c 这是它的调度机制 而按uC OSIII书中所讲 xff0c 普通任务切换和从中断中退出后的任务切换应该是不同的函数 xff0c 因为普通任务切换
  • 每天一个adb命令:dumpsys命令详解

    dumpsys是一个能帮助我们对手机进行性能分析的命令 xff0c 它可以帮助我们获取电池 内存 cpu 磁盘 wifi等等信息 xff0c 具体能查询的信息可以通过命令 xff1a adb span class hljs built in
  • vs2017如何创建一个asax文件

    VS2017无法为网站创建Global asax文件 xff0c 导致出现错误WebForms UnobtrusiveValidationMode 需要 jquery ScriptResourceMapping 解决方案如下 xff1a 勾
  • Spring Security OAuth2.0认证授权

    文章目录 1 基本概念1 1 什么是认证1 2 什么是会话1 3什么是授权1 4授权的数据模型1 4 RBAC1 4 1 基于角色的访问控制 2 基于Session的认证方式3 整合案例3 1 SpringMVC 43 Servlet3 0
  • 浏览器不显示favicon.ico怎么办?

    原因1 xff1a 连接文件的路径不对 如上图路径的话href连接路径应该写成 xff1a href 61 34 img favicon ico 34 xff0c 具体如下 xff1a span class token operator l
  • VNCViewer连接树莓派失败、显示超时的部分原因

    刚入手树莓派 xff0c 在用VNCViewer这款软件实现树莓派的图形化桌面时遇到了一些坑 xff0c 在这里分享 xff0c 希望能对大家有所帮助 1 在文本框内输入IP地址之后一定要记得加上 端号 xff0c 如下图所示 这个端号在P
  • Kubernetes中文手册

    Kubernetes中文手册 https www kubernetes org cn kubernetes pod
  • JSP中文乱码问题终极解决方案

    在介绍方法之前我们首先应该清楚具体的问题有哪些 xff0c 笔者在本博客当中论述的 JSP 中文乱码问题有如下几个方面 xff1a 页面乱码 参数乱码 表单乱码 源文件乱码 下面来逐一解决其中的乱码问题 一 JSP 页面中文乱码 在 JSP
  • JS表白代码

    简单的JS弹窗表白代码 思路 xff1a 只有当用户输入1 xff08 表示喜欢你 xff09 才有进一步浏览的资格 如果用户输入2 xff08 不喜欢你 xff09 就会陷入死循环进行撒娇 xff0c 只有当用户输入1 xff0c 才可以
  • Quartz框架详解

    Quartz框架可以实现 异步定时任务 Quartz框架下载地址 注意1版本和2版本写法完全不一样 xff0c 本文采用的是2 x版本 下载完毕后进入进入lib文件夹 xff0c 然后将下面的几个jar引入项目 xff1a 基本实现步骤 x
  • 前端的端口问题

    本文 xff0c 将以通俗易懂的方式剖析 服务器 电脑 是怎么访问html文件 先说一下前置知识 xff1a 首先我们得知道一件事情 xff1a 电脑中每个运行的程序都对应着某个端口 xff0c 举个例子 xff1a 我们都知道mysql默
  • 湖北师范大学java习题汇编(超详细!已经进行了章节划分)

    表达式和流程控制语句 1 验证歌德巴赫猜想 一个充分大的偶数 xff08 大于或等于6 xff09 可以分解为两个素数之和 试编程序 xff0c 将 6至50之间全部偶数表示为两个素数之和 span class token keyword