0
我有一個小問題,我的實例變量有點作爲類變量,至少這就是我的想法。2實例變量不斷更新對方
public class Lab10 {
public static void main(String[] args) {
CannonSolution MaxRange = MAXRMHC(10);
MaxRange.println();
}
public static CannonSolution MAXRMHC(int iter){
double range =0;
double newrange;
CannonSolution sol = new CannonSolution(1,1);
CannonSolution NewSol = new CannonSolution(sol.SendCanang(),sol.SendCanvel());
range = Cannon.GetMaxRange(sol.SendCanang(),sol.SendCanvel());
for(int i =0;i<iter;i++){
NewSol.smallChange();
newrange = Cannon.GetMaxRange(NewSol.SendCanang(), NewSol.SendCanvel());
if(range <= newrange){
System.out.println(range+" is smaller than "+newrange);
NewSol.println();
range = newrange;
sol = NewSol;
}else if (range > newrange){
NewSol.println();
sol.println();
}else{
System.out.println("I don't work");
}
}
System.out.println();
System.out.println(range);
return (sol);
}
}
public class CannonSolution {
private double canang;
private double canvel;
public CannonSolution(double ang, double vel){
if(ang <25.0 || ang >55.0){
canang = Randomang();
}else{
canang = ang;
}
if(vel <1500.0 || vel > 1650.0){
canvel = Randomvel();
}else{
canvel = vel;
}
}
public double SendCanang(){
return (canang);
}
public double SendCanvel(){
return (canvel);
}
private static double Randomang(){
double ang = RandomNumber.RandomNum(25,55);
return ang;
}
private static double Randomvel(){
double vel = RandomNumber.RandomNum(1500,1650);
return vel;
}
private void smallChangeVel(){
double vel = canvel;
double number = (double) RandomNumber.UI(1,30);
double updown = RandomNumber.UI(1,2);
if(updown ==1){
vel = vel + number;
}else{
vel = vel - number;
}
if(vel <1500){
vel =1500.0;
}else if (vel > 1650){
vel = 1650.0;
}
canvel = vel;
}
private void smallChangeAng(){
double ang = canang;
double number = RandomNumber.UI(1,3);
double updown = RandomNumber.UI(1,2);
if(updown ==1){
ang = ang + number;
}else{
ang = ang - number;
}
if(ang <25){
ang =25.0;
}else if (ang > 55){
ang = 55.0;
}
canang= ang;
}
public void smallChange(){
double updown = RandomNumber.UI(1,2);
if(updown == 1){
smallChangeAng();
}else{
smallChangeVel();
}
}
public void print()
{
System.out.println(canang);
System.out.print(canvel);
}
public void println()
{
print();
System.out.println();
}
}
http://pastebin.com/zJWPyz7Q http://pastebin.com/EYugr96p
的問題是,當Newsol使用它改變既newsol,溶膠smallchange方法改變。我一直堅持這一點。
對不起,我不太確定如何格式化這個即時通訊新的要求在stackoverflow。
爲什麼在你的代碼中:'// sol = Newsol;'?它在你正在運行的代碼中註釋掉了嗎? –
我正在測試一些東西,並且忘記刪除那個抱歉。修正了它對於混亂的抱歉。 –