VBA kodlarını Java ya uygulamak

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Merhaba

Aşağıdaki kodlarla 1 den 50 ye kadar olan sayıların faktoryellerinin toplamını vba da buluyorum

Bu kodları java ya nasıl çevirebilirim. Ya da java kodları ile nasıl yazabilirim.

Kod:
Sub Makro1()
[a1].ClearContents
For n = 1 To [b1].Value
[a1] = [a1] + WorksheetFunction.Fact(n)
Next
End Sub
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın AS3434,

Denemedim kodları, şimdi buldum umarım işinize yarar.

Alıntı:

Kod:
import javax.swing.*;

public class Faktoriyel
{
public static void main(String args[]){
String a = JOptionPane.showInputDialog("Faktoriyeli alinacak sayiyi girin:","2005 (c) s.alper gorgulu");
if(a.equals("1") || a.equals("0")){
System.out.println("1");
System.exit(1);
}

String yeniSayi=fakt(a);
String sonuc=carp(a,yeniSayi);

while(!yeniSayi.equals("1")){

yeniSayi=fakt(yeniSayi);

if(yeniSayi.equals("1"));
else sonuc=carp(sonuc,yeniSayi);

}
System.out.println(sonuc);
System.exit(1);
}

public static String fakt(String sayi2){

String sayi=sayi2;
int length=sayi2.length();
int sonrakam = ((new Integer(sayi2.charAt(length-1))).intValue())-48 ;
if(sonrakam != 0){

sonrakam -=1;
sayi = sayi.substring(0,length-1)+sonrakam;
}
else if(sayi!="0"){
int i;
for(i=length-1;sayi.charAt(i)=='0';i--){
sayi=sayi.substring(0,i)+"9"+sayi.substring(i+1);
}
int r = ((new Integer(sayi.charAt(i))).intValue())-48 ;
r -= 1;
sayi=sayi.substring(0,i)+r+sayi.substring(i+1);
}
if(sayi.length()!=1)
for(int i=0;i<sayi.length(); i++){
if(sayi.charAt(i)=='0')
sayi=sayi.substring(i+1);
else break; 
}
return sayi;
}

public static String carp (String Number1,String Number2)
{
int atHand=0, digit1=0, digit2=0, digitNew=0;

int length1=Number1.length();
int length2=Number2.length();

for(;length1>length2
{
Number2="0"+Number2;
length2++;
}
for(;length1<length2
{
Number1="0"+Number1;
length1++;
}
int k=0;
int i=length2-1;

String satir[]=new String[length2];
for(int h=0;h<length2;h++)
satir[h]="";

while (i>=0) { 

digit2=((new Integer(Number2.charAt(i))).intValue()) -48;
atHand=0;
for(int j=length2-1;j>=0;j--){
digit1=((new Integer(Number1.charAt(j))).intValue())-48 ;
digitNew=(atHand+(digit1*digit2)) %10;
atHand=(digit1*digit2+atHand) / 10 ;
satir[k]=digitNew+satir[k];
if(atHand!=0 && j==0){
satir[k]=atHand+satir[k];
}

}//for

i--; k++; 
} //while 
for(int b=0;b<length2;b++)
{
if(b!=0) 
for(int m=0;m<b;m++) 
satir[b]=satir[b]+"0";
}

for(int b=0;b<length2-1;b++)
satir[b+1]=topla(satir[b],satir[b+1]);

for(int o=0;satir[length2-1].charAt(o)=='0';i++)
satir[length2-1]=satir[length2-1].substring(o+1);


return satir[length2-1];

} 

static String topla (String Number1 , String Number2){
int atHand=0, digit1=0, digit2=0, digitNew=0;
int length1=Number1.length();
int length2=Number2.length();

for(;length1>length2
{
Number2="0"+Number2;
length2++;
}
for(;length1<length2
{
Number1="0"+Number1;
length1++;
}

int i=length2-1;
String sum=""; 
while (i>=0) { 
digit1=((new Integer(Number1.charAt(i))).intValue()) -48;
digit2=((new Integer(Number2.charAt(i))).intValue())-48 ;
digitNew=(atHand+digit1+digit2) %10;
atHand=(digit1+digit2+atHand) / 10 ;
sum=digitNew+sum;
--i;
} 
if(atHand!=0)
sum=atHand+sum ; 
return sum;
}

}//class
 

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Say&#305;n modal&#305;

&#304;lginiz i&#231;in te&#351;ekk&#252;r ederim. g&#246;nnderdi&#287;iniz kodlar&#305; deneyece&#287;im.

Ben &#351;&#246;yle bir &#351;eyler karalamaya &#231;al&#305;&#351;m&#305;&#351;t&#305;m.

Kod:
public class su
{
public static void main (String[] args) {
int sum=0;
int n=1;
int fact;
int a;
for (int i=1;i<[COLOR=red]13[/COLOR];i++)
{   
    fact=1;
 a=n;
 for(int j=a;j>0;j--)
 {
  fact=fact*j;
  a--;
 
 }
  sum=fact+sum;
 n++;
}
 System.out.println("sum="+sum);
}
}
NOT: Bu haliyle 12 dahil do&#287;ru hesapl&#305;yor. ama 9 haneli rakamdan 10 haneli rakam sonucuna ge&#231;ti&#287;i zaman sonu&#231;lar bozuluyor. - de&#287;erler &#252;retiyor.
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Java bilmiyorum ama JavaScript ile &#351;&#246;yle yap&#305;labilir;

HTML:
<html>
<body>
<head>

<script language="javascript">
function MyFact()
    {
    var x = parseInt (FrmFact.MyInt.value);
    var RetVal = x;
    var i;
    for( i=x-1; i>0; i=i-1)
        {
    RetVal = RetVal * i;
        }
    alert("Faktoryel = " + RetVal);
    }
</script>
</head>

<form name="FrmFact">
    Say&#305; : <input name="MyInt">
    <input type="button" value="Faktoryel HESAPLA" onClick="MyFact()">
</form>

</body>
</html>
 
Son düzenleme:

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Say&#305;n Haluk
&#304;lginiz i&#231;in te&#351;ekk&#252;r ederim.
Java olmas&#305; tercih sebebi. Ama g&#246;nderdi&#287;iniz kodlar bana bir fikir verdi.
&#350;u anda bu makinemde program yok. Ancak ak&#351;am deneyebilece&#287;im.

Sevgi ile kal&#305;n.
 
Üst