@KChernenko
Android/Java/Security

Не получается достучатся к переменным xrez, yrez во вложенном if'е?

Не получается достучатся к переменным xrez, yrez во вложенном if'е:

public class GradMethod {
		public double XREZ;
		public double YREZ;
		GuiLab2 accessObj = new GuiLab2();
		double x0 = Double.parseDouble(accessObj.strPn1);
		double eps = Double.parseDouble(accessObj.strEps);
		double a = Double.parseDouble(accessObj.strA);
		double b = Double.parseDouble(accessObj.strB);
		double c = Double.parseDouble(accessObj.strC);
		double d = Double.parseDouble(accessObj.strD);
		double xn = Double.parseDouble(accessObj.strPn2);
		double sigma = 0.5;
		double nxk;
		
	private double func(double x) {
		double f = a * x - b * Math.pow(x, 2) + Math.pow(Math.E, (c * x0 + d * xn));
		return f;
	}
	
	private double prFunc(double x) {
		double f = a - 2*b*x + (c + 2*d) * Math.pow(Math.E, (c*x0 + d*xn));
		return f;
	}
	
	public void GradMethod() {
		double xrez , yrez;
		prFunc(x0);
		int k = 0;
		double xk = x0 + eps;
		
		
		if (func(xk - eps * prFunc(xk)) - func(xk) <= - sigma * eps * Math.pow(Math.abs(prFunc(xk)), 2)) {
			nxk = xk - eps * prFunc(xk);
			prFunc(nxk);
			if(Math.abs(prFunc(nxk)) <= eps) {
				xrez = 2; //Например, присвоим тут 2-ку
				yrez = func(nxk);
				} else {
					k = k + 1;
					//continue;
				}
		} else {
				eps = eps / 2;
				//continue;
			}
		XREZ = xrez; //а тут всё равно просит инициализировать xrez
		YREZ = yrez;
		}
}


Объясните пожалуйста, как решить это проблему. Результат работы метода нужно вывести в форму, что никак не получается.
  • Вопрос задан
  • 2766 просмотров
Решения вопроса 1
@Slko
C++/C#/Python Developer
Если условия будут ложными, то переменные будут неинициализированными. Какое значение тогда должно попасть в XREZ и YREZ? Такие значения и надо записать в xrez и yrez во время их объявления, чтобы к моменту присваивания они такими и остались. Или присваивать их XREZ и YREZ только в условии. Это зависит от необходимой логики.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы