平衡数java代码 java平均数代码

[编程题] 平衡数

牛牛在研究他自己独创的平衡数,平衡数的定义是:将一个数分成左右两部分,分别成为两个新的数。

创新互联公司成立与2013年,先为环江等服务建站,环江等地企业,进行企业商务咨询服务。为环江企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

左右部分必须满足以下两点:

1,左边和右边至少存在一位。

2,左边的数每一位相乘如果等于右边的数每一位相乘,则这个数称为平衡数。

例如:1221这个数,分成12和21的话,1 2=2 1,则称1221为平衡数,再例如:1236这个数,可以分成123和1 2 3=6,所以1236也是平衡数。而1234无论怎样分也不满足平衡数。

输入描述:

输入一个正整数(int范围内)。

输出描述:

如果该数是平衡数,输出 "YES", 否则输出 "NO"。

输入例子:

1221

1234

输出例子:

YES

NO

急急急java成绩总成绩和平均分的代码?

//

import java.util.Scanner;

//

public class Test2014 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("输入学生人数:");

int n = sc.nextInt();

int sum = 0;

for(int i = 1;i = n;++i){

System.out.println("输入第"+i+"个学生成绩:");

sum += sc.nextInt();

}

System.out.println("总成绩是:"+sum+" "+"平均成绩是:"+(double)sum/n);

}

}

求这段JAVA程序代码

//Example.java

class A{

float a;

static float b;

void setA(float a ){

this.a = a;

}

void setB(float b){

this.b = b;

}

float getA() {

return a;

}

float getB() {

return b;

}

void inputA() {

System.out.println(a);

}

static void inputB() {

System.out.println(b);

}

}

public class Example {

public static void main (String args[]){

/*代码5] //通过类名操作类变量b,并赋值100

[代码6] //通过类名调用方法inputB()

A cat=new A();

A dog=new A();

[代码7] //cat调用方法setA(int a)将cat的成员a的值设置为200

[代码8] //cat调用方法setB(int b)将cat的成员b的值设置为400

[代码9] //dog调用方法setA(int a)将dog的成员a的值设置为300

[代码10] //dog调用方法setB(int b)将dog的成员b的值设置为800

[代码11] //cat调用方法inputA()

[代码12] //cat调用方法inputB()

[代码13] //dog调用方法inputA()

[代码14] //dog调用方法inputB()*/

A.b = 100;

A.inputB();

A cat = new A();

A dog = new A();

cat.setA(200);

cat.setB(300);

dog.setA(300);

dog.setB(800);

cat.inputA();

cat.inputB();

dog.inputA();

dog.inputB();

}

}

有一个要说明的是,setA()与setB()的形参是浮点型的,所以如楼上所说,楼主代码7到代码10的形参设错了。但200,400,300,800是可以的。只是将int改为float.

java语言实现产销平衡和产销不平衡问题的代码

产销不平衡用NBPSProcedure,平衡用BPSProcedure

public class ProductSaleBTProb {

public static void main(String[] args) {

float[][] costMatrix=new float[][]{{1.5f,2f,0.3f,3f},{7f,0.8f,1.4f,2f},{1.2f,0.3f,2f,2.5f}};

/*

* 测试行、列位势方法

float[][] ASMatrix=new float[6][7];

ASMatrix[0]=new float[]{20f,0f,80f,0f,0f,0f,0f};

ASMatrix[1]=new float[]{0f,70f,0f,10f,0f,0f,0f};

ASMatrix[2]=new float[]{30f,0f,0f,20f,0f,0f,0f};

doLCPosiPower(costMatrix, ASMatrix, 3, 4);

for(int i=0;i6;i++){

System.out.println(Arrays.toString(ASMatrix[i]));

}

*/

/*

* 测试pw为产地产量,sw为销售地效率,费用矩阵costMatrix

*/

int[] pw=new int[]{100,80,50};

int[] sw=new int[]{50,70,80,30};

int[] rv=BPSProcedure(costMatrix, 3, 4, pw, sw);

for(int i=0;irv.length;i+=3){

System.out.print("编号"+rv[i]+"的产地,向编号"+rv[i+1]+"的销地运输:"+rv[i+2]+"\n");

}

/*

*产销不平衡测试

costMatrix=new float[][]{{4f,2f,5f},{3f,5f,3f},{1f,3f,2f}};

int[] pw=new int[]{8,7,4};

int[] sw=new int[]{4,8,5};

int[] rv=NBPSProcedure(costMatrix, 3, 3, pw, sw);

for(int i=0;irv.length;i+=3){

System.out.print("编号"+rv[i]+"的产地,向编号"+rv[i+1]+"的销地运输:"+rv[i+2]+"\n");

}

*/

}

//产销平衡运输费用最低问题,保证pw和sw相等

//costMatrix为费用矩阵,pnum为产地个数,即costMatrix的行数,snum为销地个数,即costMatrix的列数

//pw表示不同产地产量,sw表示不同销地销量,由于是float浮点运算,保留2位小数

//返回值没三位表示一个信息,比如{...,0,1,40,1,2,60..}表示编号0的产地向编号1的销售地运输40,编号1的产地向编号2的销售地运输60,

public static int[] BPSProcedure(float[][] costMatrix,int pnum,int snum,int[] pw,int[] sw){

int i,j;

//构造一个分配矩阵,增加3行3列,增加的第1行列表示分配的和,第2行列表示行列差,第3行列表示行、列位势

float[][] ASMatrix=new float[pnum+3][snum+3];

int tmpsum=0; //记录初始解是否分配完毕,

while(tmpsumpnum){

//运用行、列差值法分别求行、列差,对即没有给运量又没有打叉的进行统计

float min1=0,min2=0;

for(i=0;ipnum;i++){

//该行打叉则跳过

if(ASMatrix[i][snum+1]==-1)continue;

min1=0;min2=0;

for(j=0;jsnum;j++){

//如果ij有运量或者已经该行或该列打叉则不统计

if(ASMatrix[i][j]0||ASMatrix[pnum+1][j]==-1)

continue;

else if(min1==0)min1=costMatrix[i][j];

else if(min2==0){

if(min1costMatrix[i][j]){

min2=min1;

min1=costMatrix[i][j];

}else

min2=costMatrix[i][j];

}else{

if(!(min2costMatrix[i][j])) continue;

else if(!(min1costMatrix[i][j]))

min2=costMatrix[i][j];

else{

min2=min1;

min1=costMatrix[i][j];

}

}

}

if(min2!=0) //如果min2有值,则计算差额

ASMatrix[i][snum+1]=Math.round((min2-min1)*100)/100f;

else

ASMatrix[i][snum+1]=min1;

}

for(j=0;jsnum;j++){

//该列打叉则跳过

if(ASMatrix[pnum+1][j]==-1)continue;

min1=0;min2=0;

for(i=0;ipnum;i++){

//如果有运量或者该行打叉则跳过

if(ASMatrix[i][j]0||ASMatrix[i][snum+1]==-1)

continue;

else if(min1==0) min1=costMatrix[i][j];

else if(min2==0){

if(min1costMatrix[i][j]){

min2=min1;

min1=costMatrix[i][j];

}else

min2=costMatrix[i][j];

}else{

if(!(min2costMatrix[i][j])) continue;

else if(!(min1costMatrix[i][j]))

min2=costMatrix[i][j];

else{

min2=min1;

min1=costMatrix[i][j];

}

}

}

if(min2!=0)

ASMatrix[pnum+1][j]=Math.round((min2-min1)*100)/100f;

else

ASMatrix[pnum+1][j]=min1;

}

//找出没有被标记为-1的行、列差额最大的并按照满足一方最大分配,当分配数和等于最大值时对应行列差标记为-1,循环进行,直到分完

float lcpospowmax=-1;

int lindex=-1,cindex=-1;

for(i=0;ipnum;i++){

if(ASMatrix[i][snum+1]==-1)continue;

if(ASMatrix[i][snum+1]!=-1lcpospowmaxASMatrix[i][snum+1]){

lcpospowmax=ASMatrix[i][snum+1];

lindex=i;

}

}

for(j=0;jsnum;j++){

if(ASMatrix[pnum+1][j]==-1)continue;

if(ASMatrix[pnum+1][j]!=-1lcpospowmaxASMatrix[pnum+1][j]){

lcpospowmax=ASMatrix[pnum+1][j]; cindex=j;

}

}

float mincost=0;

//在列上找到最大值

if(cindex!=-1){

lindex=-1;

for(i=0;ipnum;i++){

//如果该位置有运量或者被叉掉则不在统计之内

if(ASMatrix[i][cindex]0||ASMatrix[i][snum+1]==-1)

continue;

else if(mincost==0){

mincost=costMatrix[i][cindex];

lindex=i;

}else{

if(mincostcostMatrix[i][cindex]){

mincost=costMatrix[i][cindex];

lindex=i;

}

}

}

//最终找到lindex、cindex对应格子分配,尽量满足一方

//ASMatrix[pnum][cindex]表示第cindex已经分配数、ASMatrix[lindex][snum]表示已经供应的数量

//需求量和分配量之间的关系,分配后标记每行、列和的格子也相应加上

if((sw[cindex]-ASMatrix[pnum][cindex])(pw[lindex]-ASMatrix[lindex][snum])){

ASMatrix[lindex][cindex]=Math.round((sw[cindex]-ASMatrix[pnum][cindex])*100)/100f;

ASMatrix[pnum+1][cindex]=-1; //该列已经分配完毕

}else if((sw[cindex]-ASMatrix[pnum][cindex])(pw[lindex]-ASMatrix[lindex][snum])){

ASMatrix[lindex][cindex]=Math.round((pw[lindex]-ASMatrix[lindex][snum])*100)/100f;

ASMatrix[lindex][snum+1]=-1;

tmpsum++; //该行生产量分配完毕

}else{

ASMatrix[lindex][cindex]=pw[lindex]-ASMatrix[lindex][snum];

ASMatrix[lindex][snum+1]=-1;

ASMatrix[pnum+1][cindex]=-1;

tmpsum++;

}

ASMatrix[lindex][snum]=Math.round((ASMatrix[lindex][snum]+ASMatrix[lindex][cindex])*100)/100f;

ASMatrix[pnum][cindex]=Math.round((ASMatrix[pnum][cindex]+ASMatrix[lindex][cindex])*100)/100f;

}else if(lindex!=-1){

mincost=0;

cindex=-1;

for(j=0;jsnum;j++){

if(ASMatrix[lindex][j]0||ASMatrix[pnum+1][j]==-1)

continue;

else if(mincost==0){

mincost=costMatrix[lindex][j];

cindex=j;

}else{

if(mincostcostMatrix[lindex][j]){

mincost=costMatrix[lindex][j];

cindex=j;

}

}

}

//最终找到lindex、cindex对应格子分配

if((sw[cindex]-ASMatrix[pnum][cindex])(pw[lindex]-ASMatrix[lindex][snum])){

ASMatrix[lindex][cindex]=Math.round((sw[cindex]-ASMatrix[pnum][cindex])*100)/100f;

ASMatrix[pnum+1][cindex]=-1; //该列已经分配完毕

}else if((sw[cindex]-ASMatrix[pnum][cindex])(pw[lindex]-ASMatrix[lindex][snum])){

ASMatrix[lindex][cindex]=Math.round((pw[lindex]-ASMatrix[lindex][snum])*100)/100f;

ASMatrix[lindex][snum+1]=-1;

tmpsum++; //该行生产量分配完毕

}else{

ASMatrix[lindex][cindex]=pw[lindex]-ASMatrix[lindex][snum];

ASMatrix[lindex][snum+1]=-1;

ASMatrix[pnum+1][cindex]=-1;

tmpsum++;

}

ASMatrix[lindex][snum]=Math.round((ASMatrix[lindex][snum]+ASMatrix[lindex][cindex])*100)/100f;

ASMatrix[pnum][cindex]=Math.round((ASMatrix[pnum][cindex]+ASMatrix[lindex][cindex])*100)/100f;

}

}

//至此,用行列差法找到了初始分配方案ASMatrix[i][j]==0表示叉去的格子,ipnum,jsnum

boolean findSolu=false;

int tmp1=0;

for(i=0;ipnum;i++)

for(j=0;jsnum;j++){

if(ASMatrix[i][j]0)

tmp1+=1;

}

if(tmp1(pnum+snum-1))

findSolu=true;

while(!findSolu){

// 位势法求Rij,如果能找到0的说明要调整,否则找到最优解

doLCPosiPower(costMatrix,ASMatrix,pnum,snum);

//Rij=cij-(ui+vj);对于分派矩阵中空格计算Rij

float rijmin=0; //存放最小的空格校验值

int rijminl=-1,rijminc=-1;

for(i=0;ipnum;i++){

for(j=0;jsnum;j++){

if(!(ASMatrix[i][j]0)((costMatrix[i][j]-ASMatrix[i][snum+2]-ASMatrix[pnum+2][j])rijmin)){

rijmin=Math.round((costMatrix[i][j]-ASMatrix[i][snum+2]-ASMatrix[pnum+2][j])*100)/100f;

rijminl=i;rijminc=j;

}

}

}

//如果校验值小于0,则用闭回路进行调整

if(rijmin0){

//找闭回路,

int rijminOVl=-1,rijminOVc=-1; //rijmin对应点的闭回路的顶点的i、j

boolean find=false;

// 向右边上下找

for(j=rijminc+1;jsnum!find;j++){

if(ASMatrix[rijminl][j]0){

for(i=rijminl+1;ipnum;i++){

if(ASMatrix[i][rijminc]0(ASMatrix[i][j]0)){

rijminOVl=i;rijminOVc=j;

find=true;

break;

}

}

for(i=rijminl-1;i=0;i--){

if(ASMatrix[i][rijminc]0(ASMatrix[i][j]0)){

rijminOVl=i;rijminOVc=j;

find=true;

break;

}

}

}

}

// 向左边上下找

for(j=rijminc-1;j=0!find;j--){

if(ASMatrix[rijminl][j]0){

for(i=rijminl+1;ipnum;i++){

if(ASMatrix[i][rijminc]0(ASMatrix[i][j]0)){

rijminOVl=i;rijminOVc=j;

find=true;

break;

}

}

for(i=rijminl-1;i=0;i--){

if(ASMatrix[i][rijminc]0(ASMatrix[i][j]0)){

rijminOVl=i;rijminOVc=j;

find=true;

break;

}

}

}

}

//记录rijmin闭回路相邻点中最小的,并调整分派矩阵

float minW=ASMatrix[rijminl][rijminOVc]ASMatrix[rijminOVl][rijminc]?

ASMatrix[rijminl][rijminOVc]:ASMatrix[rijminOVl][rijminc];

ASMatrix[rijminl][rijminOVc]=Math.round((ASMatrix[rijminl][rijminOVc]-minW)*100)/100f;

ASMatrix[rijminOVl][rijminc]=Math.round((ASMatrix[rijminOVl][rijminc]-minW)*100)/100f;

ASMatrix[rijminOVl][rijminOVc]=Math.round((ASMatrix[rijminOVl][rijminOVc]+minW)*100)/100f;

ASMatrix[rijminl][rijminc]=minW;

}else

findSolu=true;

}

ListInteger rv=new ArrayListInteger();

for(i=0;ipnum;i++)

for(j=0;jsnum;j++){

if(ASMatrix[i][j]0){

rv.add(i);

rv.add(j);

rv.add((int)ASMatrix[i][j]);

}

}

int[] tmprv=new int[rv.size()];

for(i=0;irv.size();i++){

tmprv[i]=rv.get(i);

}

return tmprv;

}

//根据分配矩阵和费用矩阵求出分配矩阵中的行、列位势,pnum+2、sunm+2表示行、列位势在ASMatrix中的位置

//由于方程组都是cij=ui+vj的形式,根据矩阵可以逐行逐列求解。

public static void doLCPosiPower(float[][] costMatrix,float[][] ASMatrix,int pnum,int snum){

int ansnum=0,lp=snum+2,cp=pnum+2; //lp列位置,cp行位置

boolean[] bs=new boolean[pnum+snum]; //0..pnum-1为行位势

ASMatrix[0][lp]=0; //令u0=0

bs[0]=true;

ansnum+=1;

int i,j;

while(ansnumpnum+snum){

for(i=0;ipnum;i++){ //逐行求解,根据costMatrix[i][j]=ASMatrix[i][lp]+ASMatrix[cp][j]

for(j=0;jsnum!bs[i];j++){ //根据列位势求行位势

if(ASMatrix[i][j]0bs[pnum+j]){

ASMatrix[i][lp]=Math.round((costMatrix[i][j]-ASMatrix[cp][j])*100)/100f;

ansnum+=1;

bs[i]=true;

}

}

if(!bs[i])continue;

for(j=0;jsnum;j++){ //根据行位势求列位势

if(ASMatrix[i][j]0!bs[pnum+j]){

ASMatrix[cp][j]=Math.round((costMatrix[i][j]-ASMatrix[i][lp])*100)/100f;

ansnum+=1;

bs[pnum+j]=true;

}

}

}

}

}

/*

* 产销不平衡,把它增加产地或者销地转化为平衡问题

* costMatrix费用矩阵,pnum产地个数,snum销地个数

*/

public static int[] NBPSProcedure(float[][] costMatrix,int pnum,int snum,int[] pw,int[] sw){

int pwsum=0,swnum=0;

int i,j;

for(i=0;ipw.length;i++)

pwsum+=pw[i];

for(i=0;isw.length;i++)

swnum+=sw[i];

//产大于销 增加一个销地,单位费用为0

int[] rv;

if(pwsumswnum){

float[][] nCostMatrix=new float[pnum][snum+1];

for(i=0;ipnum;i++)

for(j=0;jsnum;j++)

nCostMatrix[i][j]=costMatrix[i][j];

for(i=0;ipnum;i++)

nCostMatrix[i][snum]=0f;

int[] nsw=new int[snum+1];

for(i=0;isnum;i++)

nsw[i]=sw[i];

nsw[snum]=pwsum-swnum;

rv=BPSProcedure(nCostMatrix, pnum, snum+1, pw, nsw);

}

//销大于产 增加一个产地

else if(pwsumswnum){

float[][] nCostMatrix=new float[pnum+1][snum];

for(i=0;ipnum;i++)

for(j=0;jsnum;j++)

nCostMatrix[i][j]=costMatrix[i][j];

for(j=0;jsnum;i++)

nCostMatrix[pnum][j]=0f;

int[] npw=new int[pnum+1];

for(i=0;ipnum;i++)

npw[i]=pw[i];

npw[pnum]=swnum-pwsum;

rv=BPSProcedure(nCostMatrix, pnum+1, snum, npw, sw);

}else

rv=BPSProcedure(costMatrix, pnum, snum, pw, sw);

return rv;

}

}

java课程设计题目及代码是什么?

java课程设计题目及代码分别是:

1、题目:计算器。设计内容是设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算。

设计要求是设计的计算器应用程序可以完成家法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。

2、代码:

数字按钮NumberButton类如下:

import java.awt.

import java.awt.event.

import javax.swing.

public class NumberButton extends Button.

{

int number.

public NumberButton(int number).

{

super(""+number).

this.number=number.

setForeground(Color.blue).

}

public int getNumber().

{

return number;

}

}

其它java课程设计题目及代码是:

题目:华容道。编写一个按钮的子类,使用该子类创建的对象代表华容道中的人物。通过焦点事件控制人物颜色,当人物获得焦点时颜色为蓝色,当失去焦点时颜色为灰色。

通过键盘事件和鼠标事件来实现曹操、关羽等人物的移动。当人物上发生鼠标事件或键盘事件时,如果鼠标指针的位置是在人物的下方(也就是组件的下半部分)或按下键盘的“↓“键,该人物向下移动。向左、向右和向上的移动原理类似。

代码是:

String name[]={"曹操","关羽","张","刘","马","许","兵","兵","兵","兵"}.

for(int i=0;iname.length;i++).

{

person[i]=new Person(i,name[i]).

person[i].addKeyListener(this).

person[i].addMouseListener(this).

//     person[i].addFocusListener(new Person).

add(person[i]).

}

person[0].setBounds(104,54,100,100).

person[1].setBounds(104,154,100,50).

person[2].setBounds(54,154,50,100).

person[3].setBounds(204,154,50,100).

person[4].setBounds(54,54,50,100).

person[5].setBounds(204,54,50,100);

person[6].setBounds(54,254,50,50);

person[7].setBounds(204,254,50,50);

person[8].setBounds(104,204,50,50);

person[9].setBounds(154,204,50,50);

java九九乘法表编程代码是什么?

package ch02;

public class TEST{

public static void main(String[] args) {

for (int i = 1; i =9; i++) {

for (int j = 1; j = i; j++) {

System.out.print(j+"*"+i+"="+(i*j)+" ");

}System.out.println();

}

}

}

测试结果 :

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

1*4=4 2*4=8 3*4=12 4*4=16

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

实现思路:如果我们把九九乘法表中如“1*1=1”等式全部看作一个个整体的话,九九乘法表可看作一个直角三角形,实现直角三角形可用两个for循环嵌套来实现,那么我们最后输出应为System.out.print(变量1+"*"+变量2+"="+(变量1*变量2)+" ");

代码如下:

public class ChengDemo {

public static void main(String args[]){

for(int k = 1;k=9;k++){         //外循环用于控制行数      

for(int j = 1;j=k;j++){          

System.out.print(j+"*"+k+"="+(j*k)+"\t");     //"\t"为制表符

}  

System.out.println();  //换行

}

}

}


网站名称:平衡数java代码 java平均数代码
文章路径:http://myzitong.com/article/hjpise.html