⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javaexercise.java

📁 一些Java的小的应用程序
💻 JAVA
字号:
/**
 * 1,写出一个方法,打印出他的整数参数的罗马值表示形式。
 *    比如,如果参数是1998则输出是MCMXCVIII
 * 2,在下面的十进制算术问题中,十个不同字母的每一个代表着一个0~9中的数字,
 *    写出一个程序发现所有可能的解决方案。
 *    MARK      A=1 W=2 N=3 R=4 E=5        9147
 *  +ALLEN      L=6 K=7 I=8 M=9 S=0      +16653
 *  -------                               -------
 *   WEISS                                 25800
 *  */
public class JavaExercise {
public static void main(String args[]){
/**	int b=5 ,c=8;
	System.out.println("b=5\tc=8");
	System.out.println("a= b++ + c++ ="+(b++ + c++ ));
	System.out.println("b= "+b+"\tc= "+c);
	System.out.println("a= b++ + ++c ="+(b++ + ++c ));
	System.out.println("b= "+b+"\tc= "+c);
	System.out.println("a= ++b + c++ ="+(++b + c++));
	System.out.println("b= "+b+"\tc= "+c);
	System.out.println("a= ++b + ++c ="+(++b + ++c));
	System.out.println("b= "+b+"\tc= "+c);
	System.out.println(true&&false||true);
	
	int y;
	int x=1;
	int total=0;
	while (x<=10){
		y=x*x;
		System.out.println(y);
		total+=y;
		++x;
	}System.out.printf("Total is %d\n",total);
	int count=1;
	while(count<=10){
		System.out.println(count%2==1?"****":"++++++++++++");
		++count;
		
	}
	int row=10;
	int column;
	while(row>=1){
		column=1;
		while(column<=10){
			System.out.print(row%2==1?"<":">");
			++column;
		}--row;
		System.out.println();
	}
	int count;
	for(count=1;count<10;count++){
		if(count==8)break;
		if(count==5)continue;
		System.out.printf("%d",count);
	}System.out.println("\nUsed countinue to skip printing 5");
	System.out.printf("\nBroken out of loop at count = %d \n",count);
	
	int n=1;
	switch(n){
	case 1:
		System.out.println("The number is 1");
	case 2:
		System.out.println("The number is 2");
		break;
		default:
			System.out.println("The number is not 1 or 2");
		break;
	}
	double p=0;
	double d=0;
	double k=0;
	int i=0;
	do{
		p+=4*Math.pow(-1, i)/(2*i+1);
		k=p-d;
		d=p;
		System.out.println(p);
		i++;
		}while (Math.abs(k)>Math.pow(10, -5));
	int i,j,k;
	for(i=1;i<=5;i++){
		for(j=1;j<=3;j++){
			for(k=1;k<=4;k++)
				System.out.print("*");
			System.out.println();
		}System.out.println();}
	for(parameter:arrayname)
		statement;
	
	int array[]={
			1,2,3,4,5
	};
	for(int value:array)//遍历数组的专用方法;
		System.out.printf("   %d\n", value);
int[][] a=new int[4][4];
for(int[] i:a)
	for(int j:i)
	j=2;
for(int[] i:a)
{	for(int j:i)
		System.out.print(j);
System.out.println();
}*/
//int i=5;
//System.out.println(Integer.toBinaryString(i));	
	System.out.println(binary(639));
}/**最大连续子数列之和的问题。
一个最大连续子数列之和的立方算法。
Cubic maximum contiguous subsequence sum algorithm.
seqStart and seqEnd represent the zctual best sequence
seqStart 与 seqEnd 可以设为实例变量。 */
private static int seqStart=0;
private static int seqEnd=0;
public static int maxSubsequenceSum1(int[] a){
	int maxSum=0;
	for(int i=0;i<a.length;i++)
		for(int j=i;j<a.length;j++){
			int thisSum=0;
			for(int k=i;k<=j;k++)
				thisSum+=a[k];
			if(thisSum>maxSum){
				maxSum=thisSum;
				seqStart=i;seqEnd=j;
			}
		}return maxSum;
}
/**一个最大连续子数列之和的平方算法。
Quadratic maximum contiguous subsequence sum algorithm.
seqStart and seqEnd represent the actual best sequence
seqStart 与 seqEnd 可以设为实例变量。*/
public static int maxSubsequenceSum2 (int[] a){
	int maxSum=0;
	for(int i=0;i<a.length;i++)
	{int thisSum=0;
			for(int k=i;k<a.length;k++)
			{	thisSum+=a[k];
			if(thisSum>maxSum){
				maxSum=thisSum;
				seqStart=i;seqEnd=k;
			}}
		}return maxSum;
}
/**一个最大连续子数列之和的线性算法。
 * Linear maximum contiguous subsequence sum algorithm.
 * seqStart and seqEnd represent the actual best sequence
seqStart 与 seqEnd 可以设为实例变量。*/
public static int maximumSubsequenceSum(int[]a){
	int maxSum=0;
	int thisSum=0;
	for(int i=0,j=0;j<a.length;j++)
	{thisSum+=a[j];
			if(thisSum>maxSum){
				maxSum=thisSum;
				seqStart=i;seqEnd=j;
			}
			else if(thisSum <0){
				i=j+1;
				thisSum=0;
			}
		}return maxSum;
}/**画刻度尺的递规方法*/
//Java code to draw roler
public class Graphics {
	//用于画图的类
	public  void drawLine(int a,int b,int c,int d){
		//用于画直线的方法
	}
	public void fillRect(int a,int b,int c,int d){
		
	}
}
public static void drawRuler(Graphics g,int left,int right,int level){
	if(level<1)return;
	int mid=(left+right)/2;
	g.drawLine(mid,80,mid,80-level*5);
	drawRuler(g,left,mid-1,level-1);
	drawRuler(g,mid+1,right,level-1);
}/**用于画分形星轮廓的代码*/
public static void drawFractal(Graphics g,int xCenter,int yCenter,int boundingDim){
	int side=boundingDim/2;
	if(side<1)return;
	//compute corners
	int left=xCenter-side/2;
	int top=yCenter-side/2;
	int right=xCenter+side/2;
	int bottom=yCenter+side/2;
	//Recursively draw four quadrants.
	drawFractal(g,left,top,side);
	drawFractal(g,left,bottom,side);
	drawFractal(g,right,top,side);
	drawFractal(g,right,bottom,side);
	//Draw central square ,overlappint quadrants.
	g.fillRect(left,top,right-left,bottom-top);
	}
/**模运算,模幂
 * return x^n(mod p)
 * assumes x,n>=,p>0,x<p,0^0=1
 * overflow may occur if p>31bits.
 * */
public static long power(long x,long n,long p){
	if(n==0)return 1;
	long temp=power((x*x)%p,n/2,p);
	if(n%2!=0)temp=(temp*x)%p;
	return temp;
}/**最大公约数和乘法逆元*/
public static long gcd(long a,long b){
	if(b==0)return a;
	else return gcd(b,a%b);
}/**决定乘法逆元的程序*/
private static long x;
private static long y;
private static void fullGcd(long a ,long b){
	long x1,y1;
	if(b==0){
		x=1;
		y=0;
	}else{
		fullGcd(b,a%b);
		x1=x;y1=y;
		x=y1;y=x1-(a/b)*y1;
	}
}public static long inverse(long a,long n)
{
	fullGcd(a,n);return x>0?x:x+n;
}/**解决兑换问题的一个静态编程方法,通过计算从0到maxChange之间的所有的兑换情况,
*得出构造实际的硬币系列的信息
**/
public static void makeChange(int[] coins,int differentCoins,
		int maxChange,int[] coinsUsed,int[] lastCoin){
coinsUsed[0]=0;lastCoin[0]=1;
for(int cents=1;cents<=maxChange;cents++){
	int minCoins=cents;
	int newCoin=1;
	for(int j=0;j<differentCoins;j++){
		if(coins[j]>cents)continue;
		if(coinsUsed[cents-coins[j]]+1<minCoins){
			minCoins=coinsUsed[cents-coins[j]]+1;
			newCoin=coins[j];
		}
	}coinsUsed[cents]=minCoins;
	lastCoin[cents]=newCoin;
}
}/**写一个递规方法用于返回N的二进制表示中的1的个数。可利用这样一个事实,
*即这个数等于N/2的二进制表示中的1的个数。
**/

public static int binary(int n){
	if(n<=0)return 0;
	else if(n==2)return 1;
	else if(n%2==0)return binary(n/2);
	else return binary(n/2)+1;
}
/**希尔排序*/
public static void shellsort(Comparable[] a){
	for(int gap=a.length/2;gap>0;gap=gap==2?1:(int)(gap/2.2))
		for(int i=gap;i<a.length;i++){
			Comparable temp=a[i];
			int j=i;
			for(;j>=gap&temp.compareTo(a[j-gap])<0;j-=gap)
				a[j]=a[j-gap];
			a[j]=temp;
		}
}/**归并排序*/
public static void mergeSort(Comparable[] a){
	Comparable[] tempArray=new Comparable[a.length];
	mergeSort(a,tempArray,0,a.length-1);
}private static void mergeSort(Comparable[] a,Comparable[] tempArray,int left,int right){
	if(left<right){
		int center=(left+right)/2;
		mergeSort(a,tempArray,left,center);
		mergeSort(a,tempArray,center+1,right);
	merge(a,tempArray,left,center+1,right);	
	}
}private static void merge(Comparable[] a,Comparable[] tempArray,int leftPos,int rightPos,int rightEnd){
	int leftEnd=rightPos-1;
	int tempPos=leftPos;
	int numElement=rightEnd-leftPos+1;
	while(leftPos<=leftEnd&rightPos<=rightEnd)
		if(a[leftPos].compareTo(a[rightPos])<0)
			tempArray[tempPos++]=a[leftPos++];
		else 
			tempArray[tempPos++]=a[rightPos++];
	while(leftPos<=leftEnd)
		tempArray[tempPos++]=a[rightPos++];
	while(rightPos<=rightEnd)
		tempArray[tempPos++]=a[rightPos++];
	for(int i=0;i<numElement;i++,rightEnd--)
		a[rightEnd]=tempArray[rightEnd];
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -