我是编程新手,根本不懂Java。下面是Java中的代码,我在Pascal中无法弄清楚:
public static boolean verificaRS(String numeroRS)
{
Integer numeroAbsoluto = Integer.valueOf(0);
Integer resto = Integer.valueOf(0);
Integer numero = Integer.valueOf(0);
int numeroAuxiliar = 1000000000;
int soma = 0;
try
{
numero = Integer.valueOf(Integer.parseInt(numeroRS));
}
catch (Exception ex)
{
Log.escreveLog(ex.toString());
return false;
}
if (numero.intValue() > 0)
{
for (int contador = 9; contador > 1; contador--)
{
numeroAuxiliar /= 10;
resto = Integer.valueOf(numero.intValue() % numeroAuxiliar);
numeroAbsoluto = Integer.valueOf(numero.intValue() / numeroAuxiliar);
numero = Integer.valueOf(numero.intValue() - numeroAbsoluto.intValue() * numeroAuxiliar);
soma += numeroAbsoluto.intValue() * contador;
}
if (soma % 11 == numero.intValue())
return true;
if ((soma % 11 == 10) && (numero.intValue() == 0))
{
return true;
}
return false;
}
return false;
}
有人可以帮我翻译吗?到目前为止,这就是我所做的:
NumeroAbsoluto, Resto, Numero, NumeroAuxiliar, Soma: Integer;
Contador: Integer;
begin
numeroAuxiliar := 1000000000;
Numero := 00009356332;
for Contador := 9 downto 1 do
begin
NumeroAuxiliar := NumeroAuxiliar div 10;
Resto := Numero mod NumeroAuxiliar;
NumeroAbsoluto := Numero div NumeroAuxiliar;
Numero := Numero - NumeroAbsoluto * NumeroAuxiliar;
Soma := Soma + NumeroAbsoluto * Contador;
end;
本案例中的数字是00009356332.但最后,结果并不相同。
答案 0 :(得分:0)
您的Java代码是否正确?当你的方法返回true时?我认为你的Java代码很脏...... mbrath的答案是干净的直接转录到Pascal。
答案 1 :(得分:0)
类似下面的内容(交错显示翻译的内容)。到目前为止,您展示的翻译的关键问题是,for contador :- 9 downto 1
应该downto 2
与原始代码相匹配。
//public static boolean verificaRS(String numeroRS)
//{
function verificaRS( numeroRS: string ): boolean;
// Integer numeroAbsoluto = Integer.valueOf(0);
// Integer resto = Integer.valueOf(0);
// Integer numero = Integer.valueOf(0);
// int numeroAuxiliar = 1000000000;
// int soma = 0;
var
numeroAbsoluto: integer = 0;
resto: integer = 0;
numero: integer = 0;
numeroAuxiliar: integer = 1000000000;
soma: integer = 0;
// try
// {
// numero = Integer.valueOf(Integer.parseInt(numeroRS));
// }
// catch (Exception ex)
// {
// Log.escreveLog(ex.toString());
// return false;
// }
begin
try
numero := StrToInt( numeroRS );
except
// This is basic; there is probably a smarter way to handle the exception
Log.escreveLog( "StrToInt exception" );
exit( false );
end;
// if (numero.intValue() > 0)
// {
if numero > 0 then
begin
// for (int contador = 9; contador > 1; contador--)
// {
// numeroAuxiliar /= 10;
// resto = Integer.valueOf(numero.intValue() % numeroAuxiliar);
// numeroAbsoluto = Integer.valueOf(numero.intValue() / numeroAuxiliar);
// numero = Integer.valueOf(numero.intValue() - numeroAbsoluto.intValue() * numeroAuxiliar);
// soma += numeroAbsoluto.intValue() * contador;
// }
for contador := 9 downto 2 do
begin
numeroAuxiliar := numeroAuxiliar div 10;
resto := numero mod numeroAuxiliar;
numeroAbsoluto := numero div numeroAuxiliar;
numero := numero - numeroAbsoluto * numeroAuxiliar;
soma := soma + numeroAsboluto * contador;
end;
// if (soma % 11 == numero.intValue())
// return true;
//
// if ((soma % 11 == 10) && (numero.intValue() == 0))
// {
// return true;
// }
//
// return false;
verificaRS := ((soma mod 11) = numero) or (((soma mod 11) = 10) and (numero = 0));
//}
end;