Had to implement Arrays.copyOf for doubles because froyo doesn't have that either.

This commit is contained in:
Kevin Ruland 2012-07-18 20:29:05 +00:00
parent a44e1c3df8
commit 492f5bdeb2
2 changed files with 41 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import java.util.Locale;
import net.sf.openrocket.logging.LogHelper;
import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.ArrayUtils;
import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.Coordinate;
import net.sf.openrocket.util.Inertia;
@ -54,11 +55,11 @@ public class ThrustCurveMotor implements Motor, Comparable<ThrustCurveMotor> {
this.designation = m.designation;
this.description = m.description;
this.type = m.type;
this.delays = Arrays.copyOf(m.delays, m.delays.length);
this.delays = ArrayUtils.copyOf(m.delays, m.delays.length);
this.diameter = m.diameter;
this.length = m.length;
this.time = Arrays.copyOf(m.time, m.time.length);
this.thrust = Arrays.copyOf(m.thrust, m.thrust.length);
this.time = ArrayUtils.copyOf(m.time, m.time.length);
this.thrust = ArrayUtils.copyOf(m.thrust, m.thrust.length);
this.cg = new Coordinate[ m.cg.length ];
for( int i = 0; i< cg.length; i++ ) {
this.cg[i] = m.cg[i].clone();

View File

@ -4,6 +4,10 @@ import java.lang.reflect.Array;
public class ArrayUtils {
public static <T> T[] copyOf( T[] original, int length ) {
return copyOfRange(original,0,length);
}
/**
* Implementation of java.util.Arrays.copyOfRange
*
@ -42,5 +46,38 @@ public class ArrayUtils {
return result;
}
public static double[] copyOf( double[] original, int length ) {
return copyOfRange(original,0,length);
}
public static double[] copyOfRange( double[] original, int start, int end ) {
if ( original == null ) {
throw new NullPointerException();
}
if ( start < 0 || start > original.length ) {
throw new ArrayIndexOutOfBoundsException();
}
if ( start > end ) {
throw new IllegalArgumentException();
}
double[] result = new double[(end-start)];
int index = 0;
int stop = original.length < end ? original.length : end;
for ( int i = start; i < stop; i ++ ) {
if ( i < original.length ) {
result[index] = original[i];
}
index++;
}
return result;
}
}