powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите перевести из delphi на Java
13 сообщений из 13, страница 1 из 1
Помогите перевести из delphi на Java
    #37795807
Fet Frumos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На delphi есть такой кусок кода
Код: pascal
1.
2.
3.
4.
Tnote = (doDo, doRe, doMi);

const
  DoReMi: array[TNote]   of integer = (10,20,30);



Возможен ли такой синтаксис на java?
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37795847
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fet Frumos,

нет. Но если расшифруете, скажут аналог. На первый взгляд надо использовать
Код: java
1.
2.
3.
enum Note {do, re, me}

List<Note> notes = new ArrayList<Note>



Не понятно, что значит
Код: pascal
1.
of integer = (10,20,30);
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37795870
Fet Frumos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е.
Код: pascal
1.
2.
3.
DoReMi[doDo]  = 10;
DoReMi[doRe]  = 20;
DoReMi[doMi]  = 30;
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37795878
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно что-то вроде

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
enum Note{
   C(10), D(20), E(30);
  
   private int tone;

   Note(int tone){
        this.tone = tone;
   }
}
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37795912
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по-моему это "табличная" функция

Код: java
1.
2.
3.
enum Note {do, re, me}

Map<Note, Integer> doReMi;
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37795919
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

судя по объявлению DoReMi в секции const я согласен с Blazkowicz
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37795924
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidvchpasha,

судя по объявлению DoReMi в секции const я согласен с Blazkowicz
возможно, забыл, что в дельфи DoReMi[doDo] = 10 это не присвоение.
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37795929
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public final static.
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37796342
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Fet Frumos!

Тут явно type опущен
> Tnote = (doDo, doRe, doMi);

> const
> DoReMi: array[TNote] of integer = (10,20,30);

Фишка в том, что перечеслимый тип в pascal может служить индексом
массива. Равно как и любой конечный тип с небольшим количеством
значений- например можно описать x: array[byte] of integer; - и будет
массив из 256 целых чисел.

Цель, как я понимаю, в том, что где-то может быть ещё описано
Код: sql
1.
const DoReMi1: array[TNote]   of integer = (11,21,31);


И у какой-то функции, к примеру, будет входная переменная типа array[TNote].

Удобной замены, собственно, в яве нет. Собственно Вирт при разработке
Оберона сам такое назвал ересью- мол только компилятор усложняет.

Вижу два решения:

Код: sql
1.
2.
3.
4.
5.
6.
enum Note {do, re, me}

Map<Note, Integer> doReMi = new HashMap();
doReMi.put(Node.do, 10);
doReMi.put(Node.re, 20);
doReMi.put(Node.mi, 30);



Код: sql
1.
2.
3.
4.
5.
enum Note {do, re, me}

int[] doReMi = new int[]{10,20,30};
.....
 doReMi[Note.do.ordinal()]



Ну и класс свой можно написать, использование которого будет не сложнее
2го варианта, но лишено его неоднозначности.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37796448
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraОберона сам такое назвал ересью- мол только компилятор усложняет.
+1
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37796552
Fet Frumos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GKS_SamaraФишка в том, что перечеслимый тип в pascal может служить индексом массива
+1, только это мне надо было написать :), и type тоже пропустил. Ваши варианты подходят.
Всем большое спасибо, буду дальше разбираться.
...
Рейтинг: 0 / 0
Помогите перевести из delphi на Java
    #37796613
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более полный аналог будет EnumMap , в нем ключи железно только из enum.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Помогите перевести из delphi на Java
    #38484970
Владимир333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста перевести в java?
Никак не получается верно переделать...(
------------------------------------------------------------------------------------------------------
const
n_max = 2; //число уравнений

type
TVec = array[1..n_max] of double;
TMat = array[1..n_max,1..n_max] of double;

//система уравнений
procedure F(n: integer; x: TVec; var y: TVec);
begin
y[1]:=x[1]-exp(-x[2]);
y[2]:=x[2]-exp(x[1]);
end;

//вычисление обратной матрицы Якоби
procedure G(n: integer; x: TVec; var a: TMat);
var
det: double;
i,j: integer;
begin
a[1,1]:=1; a[1,2]:=-exp(-x[2]);
a[2,1]:=exp(x[1]); a[2,2]:=1;
det:=1+exp(x[1])*exp(-x[2]);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=a[i,j]/det;
end;

//процедура решения системы методом Ньютона
procedure Newts(n: integer; var x: TVec; eps: double; var k: integer);
var
i,j: integer;
x0,y: TVec;
a: TMat;
cod: boolean;
begin
k:=0;
repeat
for i:=1 to n do x0[i]:=x[i];
F(n,x,y); G(n,x,a);
for i:=1 to n do
for j:=1 to n do
x[i]:=x[i]-a[i,j]*y[j];
cod:=true;
for i:=1 to n do
if abs(x[i]-x0[i]) > eps then cod:=false;
k:=k+1;
until cod;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
x: TVec;
n,k: integer;
eps: double;
begin
n:=n_max; //число уравнений
eps:=0.001; //точность
x[1]:=0.5; x[2]:=0.5; //начальное приближение
Newts(n,x,eps,k); //решение системы
Memo1.Lines.Add('Решение системы:');
Memo1.Lines.Add('x[1]='+FloatToStr(x[1]));
Memo1.Lines.Add('x[2]='+FloatToStr(x[2]));
Memo1.Lines.Add('Число итераций: '+IntToStr(k));
end;
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите перевести из delphi на Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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