powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / missing return statement ?
8 сообщений из 8, страница 1 из 1
missing return statement ?
    #33403196
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!

Есть код на Java:
Код: plaintext
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.
 class  CallMe 
{
   double  sum= 1 ;
   public   synchronized   void  CS( double  m) 
  {
    sum=sum+m;
    System.out.println(" Sum : "+sum+" Member : "+m);
     return ;
  }
}

 class  Caller  implements  Runnable 
{
   double  m,st;
  CallMe target;
   public   double  Factorial( double  k)
  {
     double  g= 1 ;
     if ((k== 0 )||(k== 1 )) return  g;
     else  
    { g=k*Factorial(k- 1 );  return  g;}
  }
  
   public   double  Corr( double  c)
  { 
     double  g1= 0 ;
     if  (c< 0 )   return  g1;
     if  (c>= 0 ) {g1=c;  return  g1;}
  }

   public  Caller(CallMe target,  int  n1)
  {
     this .target=target;
     double  zn= 1 ,st;
     for  ( int  i= 0 ;i<=n1; i+= 4 ) 
    { 
     st=i/ 2 ;  //if (this.m==0.5) this.m=1;
      this .m=zn*Math.pow( 2 ,Corr(st- 1 ))*Math.pow(m,i)/Factorial(st); 
     //if (this.m==0.5) this.m=1;
     zn=-zn; 
    }
     new  Thread( this ).start();
  }
   public   void  run() 
  {
    target.CS( this .m);
  }
}

 class  PPLab2 {
   public   static   void  main(String args[]) 
  {
    CallMe target= new  CallMe();
     new  Caller(target, 0 );
     new  Caller(target, 4 );
     new  Caller(target, 8 );
     new  Caller(target, 12 );
     new  Caller(target, 16 );
     new  Caller(target, 20 );
     new  Caller(target, 24 );
     new  Caller(target, 28 );
  }
}

При попытке скомпилировать файл выдает ошибку, что в заголовке, на открывающуюся скобку после строки
Код: plaintext
 public   double  Corr( double  c)

,хотя практически аналогичная функция подсчета факториала работает.

В чем может быть проблема?



ЗЫ. Исходная задача: ф-ция cos 2 (x 2 )
раскладывается в ряд:

1-1*х 4 +(1/3)*х 8 -(2/45)*х 12 ...=
1-(+/-1)*(2 (i/2-1)i /(i/2)!)

Загвоздка вышла в том, что первый член суммы не подходит данной формуле (по ней он =1/2 (т.к. 2 (i/2-1) =1/2 при i=0) когда должно быть 1). При подсчете обычным способом я этот эелемент выносил за цикл и отдельно добавлял к сумме.

Но в данном случае, при создании параллельных процессов в Java, никак этот элемент вынести из общей суммы не получается. Для этого пытаюсь использовать функцию
Код: plaintext
 public   double  Corr( double  c)
, которая
для первого элемента суммы 2 (0/2-1) превращает в 1.
Возможно, существует другой способ решения данной задачи?
...
Рейтинг: 0 / 0
missing return statement ?
    #33403214
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавь return 0 в конце функции.
...
Рейтинг: 0 / 0
missing return statement ?
    #33403231
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
твое
Код: plaintext
1.
2.
3.
4.
5.
 public   double  Corr( double  c) { 
   double  g1= 0 ;
   if  (c< 0 )   return  g1;
   if  (c>= 0 ) {g1=c;  return  g1;}
}

иое
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   double  Corr( double  c) { 
   if  (c <  0 ) {
     return   0 . 0 ;
  }  else  {
     return  c;
  }
}

// или

 public   double  Corr( double  c) { 
   return  (c <  0 ) ?  0 . 0  : c;
}
...
Рейтинг: 0 / 0
missing return statement ?
    #33403246
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ihor
Код: plaintext
1.
2.
3.
4.
5.
6.
public double Corr(double c)
  { 
    double g1= 0 ;
    if (c< 0 )  return g1;
    if (c>= 0 ) {g1=c; return g1;}
  }


надо так:
Код: plaintext
1.
2.
3.
4.
5.
6.
public double Corr(double c)
  { 
    double g1= 0 ;
    if (c< 0 )  return g1;
    else {g1=c; return g1;}
  }

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
missing return statement ?
    #33403248
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Проблема с данной функцией решена.
Но вот исходная проблема осталась....
...
Рейтинг: 0 / 0
missing return statement ?
    #33403320
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IhorСпасибо. Проблема с данной функцией решена.
Но вот исходная проблема осталась....
надо именно разложить в ряд? чем стандартные ф-ии не подошли?
...
Рейтинг: 0 / 0
missing return statement ?
    #33403439
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто задание такое:) Для практики в создании параллельных процессов В Java. Как ни крути, а надо делать.
...
Рейтинг: 0 / 0
missing return statement ?
    #33403505
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IhorДля практики в создании параллельных процессов В Java. Как ни крути, а надо делать.
самое первое - весь код ты должен делать в run(), а так -
весь твой код ничего общего с правильным распределением
вычислений не имеет.

Код: plaintext
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.
 package  test.ihor;

 public   class  CallMe {
   private   double  sum =  1 . 0 ;

   public   double  getSum() {
     return  sum;
  }

   public   void  setSum( double  sum) {
     this .sum = sum;
  }

   public   synchronized   void  CS( double  m) {
    sum += m;
    System.out.println("Sum: " + sum + " Member: " + m);
  }

   public   static   void  main(String[] args) {
    CallMe target =  new  CallMe();
     new  Caller(target,  0 );
     new  Caller(target,  4 );
     new  Caller(target,  8 );
     new  Caller(target,  12 );
     new  Caller(target,  16 );
     new  Caller(target,  20 );
     new  Caller(target,  24 );
     new  Caller(target,  28 );
  }
}

 class  Caller  implements  Runnable {
   private  CallMe target;
   double  m;
   int  n1;

   public   double  factorial( double  k) {
     if  ((k ==  0 ) || (k ==  1 )) {
       return   1 ;
    }  else  {
       return  k * factorial(k -  1 );
    }
  }

   public   double  corr( double  c) {
     return  (c <  0 ) ?  0 . 0  : c;
  }

   public  Caller(CallMe target,  int  n1) {
     this .target = target;
     this .n1 = n1;

    // все вычисления вынесены в run()

     new  Thread( this ).start();
  }

   public   void  run() {
     double  zn =  1 , st;
     for  ( int  i =  0 ; i <= n1; i +=  4 ) {
      st = i /  2 ;  //if (this.m==0.5) this.m=1;
      m = zn * Math.pow( 2 , corr(st -  1 )) * Math.pow(m, i) / factorial(st);
      //if (this.m==0.5) this.m=1;
      zn = -zn;
    }

    target.CS(m);
  }
}
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / missing return statement ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]