java - Elements in an Array symmetric -
this code:
if (refractedangleindegrees > 60.0) { system.out.println ("the angle making reflection"); //should reverse array , make palindrome-like array (int f = 0; f < gradient.length /2; f++) { double anglesreversed = anglearray[f]; anglearray[f] = anglearray[gradient.length - f - 1]; anglearray[gradient.length - f - 1] = anglesreversed; } (int e = 0; e < gradient.length; e++) { //system.out.println(anglearray[e]); } } else { system.out.println ("the angle refracting"); } system.out.println(anglearray[x]); x++; } so stuck program. when hits 60, want reverse values.
for instance, if have array of [1 2 3 4 5], , keeps going until hits 5.
i want go backwards , [ 1 2 3 4 5 4 3 2 1] (or until array slots end), think ended reversing values...
also, else statement stop after angle "makes reflection". put break there?
this code before this, might reason why it's wrong because keeps printing out nan after angle hits reflection. reflection equals 0, wrong...
double incidentangleindegrees = 10.0; double incidentangleinradian; double refractedangleindegrees; double refractedangleinradian; double storedangleindegrees; double storedangleinradian; int x = 0; //loop refraction double[] anglearray = new double [gradient.length]; while(x < 120) { incidentangleinradian = incidentangleindegrees * (math.pi / 180); // converting incident angle degrees radians refractedangleinradian = math.asin((indexarray[x] * incidentangleinradian) / indexarray[x + 1]); //getting refracted angle in radians refractedangleindegrees = refractedangleinradian * (180 / math.pi); storedangleindegrees = refractedangleindegrees; // storing refracted angle in degrees incidentangleindegrees = storedangleindegrees; // making refracted angle in degree new incident angle in degrees anglearray[x] = storedangleindegrees; }
if want reflect whole array, here's code it:
class rev { static int[] reflected(int[] a) { int[] b = new int[a.length<<1]; system.arraycopy(a, 0, b, 0, a.length); int i, j; (j = a.length-1, = 0; j>=0; j--, i++) { b[a.length+i] = a[j]; } return b; } static void printarray(int[] a) { (int = 0; < a.length; i++) { system.out.print(a[i] + ","); } system.out.println(); } public static void main(string[] args) { final int[] = {1, 2, 3, 4, 5}; int[] b = reflected(a); printarray(a); printarray(b); } } if want reflect part of it, need modify code slightly. hope helps.
the output is:
1,2,3,4,5, 1,2,3,4,5,5,4,3,2,1,
Comments
Post a Comment