Conversao de delphi para java

7 respostas
V

Ola pessoal tenho a seguinte funçao em delphi:

function Codigo_Barra(Str: String): String;
Var DAC,i,Mult,Soma; Integer;
begin
Soma := 0;
for i :=1 to Length (Str) do
begin
if ( i mod 2) = 0 then Mult:= (StrToInt(Copy(Str,i,1))) * 1
                 else Mult:= (StrToInt(Copy(Str,i,1))) * 2;

if ( Mult >= 10 ) then
Mult := StrToInt(copy(IntToStr(Mult),1,1)) +
StrToInt(copy ( IntToStr(Mult),2,1));
Soma:=Soma+Mult;
end;
Soma:=(Soma Mod 10);
if Soma<> 0 then
DAC:= 10 -soma
else DAC:=0
end

alguem pod me ajudar a convertar tudo isso para java , estou me erolando na hora de copiar a posiçao da string !!
desde ja agradeço :slight_smile:

7 Respostas

D

Semelhante a função Copy do delphi
voce pode usar o metodo substring(1,1) da classe String.

Str.substring(i,1)

Um Abraço,

Dennis

T

Dica - em Delphi e em VB os caracteres de uma String são indexados a partir do 1; no Java, no C++, no C# são indexados a partir do 0.

V

ae galera valeus olha o resultado final

public class Boleto {

public String converteBoleto(String num) {

int DAC, i , Soma , Mult;   
	
	Soma=0;
	
	 for (i=0;i<num.length();i++){
	if ((i%2)==0){
		Mult = Integer.parseInt(num.substring(i,1))*1;}

	else{
		Mult = Integer.parseInt(num.substring(i,1))*2;
		}
	if (Mult >= 10){
		Mult = Integer.parseInt(Integer.toString(Mult).substring (0,1)) +
		       Integer.parseInt(Integer.toString(Mult).substring (1,1));
	}
	Soma = Soma + Mult;
	
}
	 Soma = (Soma%10 );
	 
 if (Soma != 0){
 	
 	DAC=10 - Soma;
 	
	 }
	else {DAC = 0;}
 
 
 	 
return Integer.toString(DAC);

	
}}

só q eu nao estou consiguindo pegar esse return na minha pagina jsp !!
alguem tem alguma opniao sobre ?
desde ja agradeço

V

qdo eu pego o retorno

Boleto bo = new Boleto();
String retorno=bo.converteBoleto(texto);

ta dando o seguinte erro

11:32:50,061 ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: For input string: “”

o q tem de erro galera ???

furutani

Provavelmente em uma dessas linhas

Integer.parseInt(num.substring(i,1))*1;

o método parseInt() está recebendo uma string vazia

PS. use as tags code para colocar o código

V

sim mais o valor dessa string vem do jsp estou passando via parametro.

Mult = Integer.parseInt(num.substring(i,1))*1; - > apos o if se é par multiplica a posição i da string por 1 e joga em Mult , certo ?

furutani

O que eu disse é que o método Integer.parseInt() está recebendo uma string vazia, vc verificou o que retorna num.substring(i,1)?
O retorno disso pode ser um string vazia.

Criado 3 de agosto de 2005
Ultima resposta 4 de ago. de 2005
Respostas 7
Participantes 4