Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 1
Регистрация: 30.01.2016
Сообщений: 66

Нужно исправить код АБСОЛЮТНОМУ профану

08.05.2017, 03:17. Показов 783. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Я в java АБСОЛЮТНЫЙ профан, но вот возникла надобность (код взят из вики):
Java
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
/*
    Equation of Time calculation
    *** No guarantees are implied. Use at your own risk ***
 
    Written by Del Smith, 2016-11-29
 
    Based on "Equation of time" WikiPedia article as of 2016-11-28
    (which describes angles in a bewildering mixture of degrees and radians)
 
    It appears to give a good result, but I make no claims for accuracy.
*/
// constants  (all angles as radians)
private static final Double pi = atan(1.0)*4;             // tan(pi/4) = 1  (45 degrees)
private static final Double lambda = 23.44 * pi / 180;    // Earth's inclination in radians
private static final Double omega = 2*pi/365.25;          // angular velocity of annual revolution (radians/day)
 
// calculate the Equation of Time from 'day of year'
private static Double EqnOfTime(int day_number) {
    // the result is in seconds
    // add to the Mean Solar Time  (UTC + Longitude*240 sec.) to get Apparent Solar Time
    // D                                                          day of the year
    // A = W*(D+10)                                               angle of revolution (circular)
    // B = A + 0.0333*sin(W*(D-2))                                angle of revolution (elliptical)
    // C = ( A - atan[  tan(B) / cos (inclination) ] ) / 'pi'     angular correction
    // EOT = 43200 × (C − int(C+0.5))                             Equation of Time in seconds
    Double delta = Integer.valueOf(day_number).doubleValue();
    Double alpha = omega*((delta+10)%365);                              // angle in (mean) circular orbit, solar year starts 21. Dec
    Double beta = alpha + 0.0333*sin(omega*((delta-2)%365));            // angle in elliptical orbit, from perigee 3. Jan (radians)
    Double gamma = ( alpha - atan( tan(beta) / cos(lambda))) / pi;      // angular correction
    return (43200. * (gamma - Double.valueOf(gamma+0.5).intValue()));   // equation of time in seconds
}
После компиляции получаю следующие сообщения об ошибках:
Code
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
javac /Users/ES/Desktop/Скрипты/EOT.java
/Users/ES/Desktop/Скрипты/EOT.java:13: error: class, interface, or enum expected
private static final Double pi = atan(1.0)*4;             // tan(pi/4) = 1  (45 degrees)
                     ^
/Users/ES/Desktop/Скрипты/EOT.java:14: error: class, interface, or enum expected
private static final Double lambda = 23.44 * pi / 180;    // Earth's inclination in radians
                     ^
/Users/ES/Desktop/Скрипты/EOT.java:15: error: class, interface, or enum expected
private static final Double omega = 2*pi/365.25;          // angular velocity of annual revolution (radians/day)
                     ^
/Users/ES/Desktop/Скрипты/EOT.java:18: error: class, interface, or enum expected
private static Double EqnOfTime(int day_number) {
               ^
/Users/ES/Desktop/Скрипты/EOT.java:27: error: class, interface, or enum expected
    Double alpha = omega*((delta+10)%365);                              // angle in (mean) circular orbit, solar year starts 21. Dec
    ^
/Users/ES/Desktop/Скрипты/EOT.java:28: error: class, interface, or enum expected
    Double beta = alpha + 0.0333*sin(omega*((delta-2)%365));            // angle in elliptical orbit, from perigee 3. Jan (radians)
    ^
/Users/ES/Desktop/Скрипты/EOT.java:29: error: class, interface, or enum expected
    Double gamma = ( alpha - atan( tan(beta) / cos(lambda))) / pi;      // angular correction
    ^
/Users/ES/Desktop/Скрипты/EOT.java:30: error: class, interface, or enum expected
    return (43200. * (gamma - Double.valueOf(gamma+0.5).intValue()));   // equation of time in seconds
    ^
/Users/ES/Desktop/Скрипты/EOT.java:31: error: class, interface, or enum expected
}
^
9 errors

Нужно исправить код, чтобы он компилировался без ошибок и возвращаемое значение ПЕЧАТАЛОСЬ.

Заранее благодарен за помощь!

P.S.
О себе:
Code
1
2
javac -version
javac 1.8.0_131
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2017, 03:17
Ответы с готовыми решениями:

Нужно исправить код
Перестала работать вторая кнопка, и при выводе в окне появилось слово "undefined" , помогите заменить слово на слово "ЦЕНА" И...

Нужно исправить код
Нужно исправить код. Ошибку выдаёт. #include<iostream> #include<cmath> using namespace std; int main() { double x,y,b; ...

Нужно исправить код
Есть код который печатает из DBGrid все работает ток первую строчку в списку кидает в заголовок колонок. if...

6
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.05.2017, 03:23
так а на кой черт ты за это берешься, раз профан? https://docs.oracle.com/javase... va/javaOO/
0
2 / 2 / 1
Регистрация: 30.01.2016
Сообщений: 66
08.05.2017, 03:28  [ТС]
xoraxax,
Спасибо, ваше мнение очень ценно для нас.
0
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
08.05.2017, 04:56
исправленный код, в архиве исходный файл, командный файл и скриншот, что все работает
для проверки распаковать архив в любой каталог и запустить командный файл c.cmd.
Java
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
import java.util.Scanner;
 
public class EOT {
    
 
    /*
        Equation of Time calculation
        *** No guarantees are implied. Use at your own risk ***
 
        Written by Del Smith, 2016-11-29
 
        Based on "Equation of time" WikiPedia article as of 2016-11-28
        (which describes angles in a bewildering mixture of degrees and radians)
 
        It appears to give a good result, but I make no claims for accuracy.
    */
// constants  (all angles as radians)
    private static final Double pi = Math.atan(1.0) * 4;             // tan(pi/4) = 1  (45 degrees)
    private static final Double lambda = 23.44 * pi / 180;    // Earth's inclination in radians
    private static final Double omega = 2 * pi / 365.25;          // angular velocity of annual revolution (radians/day)
 
    // calculate the Equation of Time from 'day of year'
    private static Double EqnOfTime(int day_number) {
        // the result is in seconds
        // add to the Mean Solar Time  (UTC + Longitude*240 sec.) to get Apparent Solar Time
        // D                                                          day of the year
        // A = W*(D+10)                                               angle of revolution (circular)
        // B = A + 0.0333*sin(W*(D-2))                                angle of revolution (elliptical)
        // C = ( A - atan[  tan(B) / cos (inclination) ] ) / 'pi'     angular correction
        // EOT = 43200 Г— (C в€’ int(C+0.5))                             Equation of Time in seconds
        Double delta = Integer.valueOf(day_number).doubleValue();
        Double alpha = omega * ((delta + 10) % 365);                              // angle in (mean) circular orbit, solar year starts 21. Dec
        Double beta = alpha + 0.0333 * Math.sin(omega * ((delta - 2) % 365));            // angle in elliptical orbit, from perigee 3. Jan (radians)
        Double gamma = (alpha - Math.atan(Math.tan(beta) / Math.cos(lambda))) / pi;      // angular correction
        return (43200. * (gamma - Double.valueOf(gamma + 0.5).intValue()));   // equation of time in seconds
    }
 
    public static void main(String[] args) {
        System.out.println("Please enter day number :");
        int day = Integer.valueOf(new Scanner(System.in).next());
        System.out.println("EqnOfTime: " + EqnOfTime(day));
 
    }
}
Миниатюры
Нужно исправить код АБСОЛЮТНОМУ профану  
Вложения
Тип файла: zip temp.zip (2.4 Кб, 1 просмотров)
0
2 / 2 / 1
Регистрация: 30.01.2016
Сообщений: 66
08.05.2017, 15:37  [ТС]
v777779,
Огромное Вам СПАСИБО!!! Всё работает!!!

Только я наверное не очень точно сформулировал задачу:
Мне надо получить ТОЛЬКО значение (которое можно использовать в Bash) и day_number должен получаться из переменной, которую выводит следующий код:
Bash
1
day_number=$(ruby -e 't = Time.now; puts t.yday.to_i')
Не подскажите, как это сделать?
0
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
08.05.2017, 15:49
По идее если у Вас есть day_number, то Вам надо вызвать функцию EqnOfTime(day_number) и получить результат.
Как ее использовать совместно с ruby не подскажу.
0
2 / 2 / 1
Регистрация: 30.01.2016
Сообщений: 66
14.05.2017, 22:39  [ТС]
v777779,
Оказалось проще разобраться с ruby.
И так:
Ruby
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
#!/usr/bin/ruby
puts "Введите долготу вашего места в градусах:"
dm = gets.chomp
dm = (24*60*60/360)*dm.to_f # Долгота места в сек/град
 
pi = (Math::PI)
#delta = (Time.now.yday) # Текущий день года
delta = 308
lambda = 23.44 * pi / 180; # Earth's inclination in radians
omega = 2 * pi / 365.259636 # angular velocity of annual revolution (radians/day)
alpha = omega * ((delta + 10) % 365) # angle in (mean) circular orbit, solar year starts 21. Dec
beta = alpha + 0.0333 * Math.sin(omega * ((delta - 2) % 365)) # angle in elliptical orbit, from perigee 3. Jan (radians)
gamma = (alpha - Math.atan(Math.tan(beta) / Math.cos(lambda))) / pi # angular correction
eot = (43200. * (gamma - ((gamma + 0.5).to_i))) # equation of time in seconds
 
puts "EOT = " + eot.to_s + " секунд"
ut = Time.now.to_s
puts "Local time: " + ut.to_s
utc =Time.now.getutc
puts "UTC time: " + utc.to_s
puts "Истинное смещение времени относительно UTC = " + dm.to_s + "″ и для текущей даты:"
cct = (Time.now.localtime.to_i + eot).round
puts Time.at(cct).strftime("Среднее солнечное время: %H:%M:%S")
ist = (utc + dm + eot).round
puts Time.at(ist).strftime("Истинное солнечное время: %H:%M:%S")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2017, 22:39
Помогаю со студенческими работами здесь

Нужно исправить код
Нужно записать процедуру вывода массива, для исходного. Для конечного отсортированного уже есть. И объединить их в одну. Вот уже час бьюсь,...

Нужно исправить код
Нужно исправить код.Не могу понять в чём ошибка. Не выводит ничего в файл. #include <iostream> #include <fstream> ...

Нужно исправить код
void __fastcall TForm1::Button2Click(TObject *Sender) { Memo1->Lines->Add(RadioGroup1->ItemIndex); ...

Нужно исправить код
У меня есть задача: Дано два слова А и В. Проверить, можно ли с букв, что входят к слову А, сложить слово В. При этом порядок не имеет...

Нужно исправить код!
Привет всем! Я дизайнер и в jawascript разбираюсь слабо. Возникла проблема из-за чертова Гугла, который закрыл использование Swiffy....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru