Advertisement

04.15.2008 at 04:37PM PDT, ID: 23325620
[x]
Attachment Details

mathematical operations using reflection

Asked by perdoname_ in Java Programming Language

Hello Experts

I need your assistance how can i modify my program in order the single method applyFunctionUsingName()  
to take as a parameter a string with the name of an arbitrary mathematical
method in class Math with a single parameter of type double (e.g., cos or atan).  




Thanks in advance for any assistance!Start Free Trial
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
interface NegInterface 
{
	public void applyNeg();
}
 
interface CosInterface
{
	public void applyCos();
}
 
interface SqrtInterface
{
	public void applySqrt();
}
 
interface SinInterface
{
	public void applySin();
}
 
 
 
class MathArray { 
 
	double[] array; 
 
	MathArray(double[] array) { 
 
		this.array = array; 
 
	} 
 
	public void applyFunctionUsingName(int func)
	{
		switch (func)
		{
			case 0:
				applySqrt();
				break;
			case 1:
				applySin();
				break;
			case 2:
				applyCos();
				break;
			default:
				System.out.println("Invalid Option Selected \n Choose 0,1 or 2");
			break;
		}
	}
 
	void warnNaN(double d) { 
 
		if(((Double)d).isNaN()) 
			System.err.println("Warning: result is undefined"); 
 
	} 
 
 
	void applySqrt() { 
 
		for(int i = 0; i < array.length; i++) { 
 
			array[i] = Math.sqrt(array[i]); 
 
			warnNaN(array[i]); 
 
		} 
 
	} 
 
 
	void applySin() { 
 
		for(int i = 0; i < array.length; i++) { 
 
			array[i] = Math.sin(array[i]); 
 
			warnNaN(array[i]); 
 
		} 
 
	} 
 
	void applyCos() { 
 
		for(int i = 0; i < array.length; i++) { 
 
			array[i] = Math.cos(array[i]); 
 
			warnNaN(array[i]); 
 
		} 
 
	} 
 
	void print() { 
 
		for(int i = 0; i < array.length; i++) 
			System.out.print(array[i] + (i < array.length-1?", ":"\n")); 
 
	} 
 
} 
 
public class MathArrayTest { 
 
	public static void main(String[] args) { 
 
		MathArray te = new MathArray(new double[] { 0.1, 2.23, 3.08 });
 
		te.applyFunctionUsingName(Integer.parseInt(args[0]));
 
		te.print();
 
 
	} 
 
}
 
Loading Advertisement...
 
[+][-]04.15.2008 at 10:28PM PDT, ID: 21365010

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]04.15.2008 at 11:02PM PDT, ID: 21365099

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]04.16.2008 at 12:47AM PDT, ID: 21365565

View this solution now by starting your 7-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zone: Java Programming Language
Sign Up Now!
Solution Provided By: oleber
Participating Experts: 2
Solution Grade: A
 
 
 
Loading Advertisement...
20080716-EE-VQP-32 / EE_QW_2_20070628