Java'da sayıların bölünebileceği değerleri bulan program.(C# ve Java )

Galileo Galilei

Hectopat
Katılım
21 Nisan 2014
Mesajlar
610
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar java'da bir program yapmaya çalışıyorum. Kullanıcı bir sayı girecek ve çıkışta o sayının bütün tam sayı bölenlerini alabilecek . Ben bir şeyler yapmaya çalıştım ama bölenlerden sadece bir tanesini gösteriyor. Diğer bölenlerini göstermesini nasıl sağlayabilirim?

Bu benim yazdığım program:

Kod:
package bn.com.blunmetest;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {
         private Button btn1;
        private TextView tv1;
        private EditText edt1;
       
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        btn1 = (Button) findViewById(R.id.btn1);
        tv1 = (TextView) findViewById(R.id.tv1);
        edt1 = (EditText) findViewById(R.id.edt1);
        
       
        btn1.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View v) {
               
               
                String sayi = String.valueOf(edt1.getText());
                int a = Integer.parseInt(sayi.toString());
                for (int i = 2; i<=a; i++ ) {
                   
                    if (a % i == 0) {
                       
                       
                        String b = String.valueOf(i);
                        tv1.setText(b);
                       
                    }
                   
                }
               
               
               
               
            }
        });
    }  
}


Buda benim esin aldığım ve tam benim istediğim gibi bütün değerleri sıralayan c# kodu:


Kod:
 private void button1_Click(object sender, EventArgs e)
        {
            degerYapistir();

         
        }
        public string bolunebilir(Int64 sayi)
        {
            string result="";
            for (int i = 2; i <= sayi; i++)
            {
                if (sayi % i == 0)
                {
                    result = result + i.ToString() + ",";

                }
           
            }
            return result;
       
        }

        public void degerYapistir()
        {

            listView1.Clear();
            listView1.Columns.Add("Fn Değeri", 100, HorizontalAlignment.Left);
            listView1.Columns.Add("Binet Değeri", 100, HorizontalAlignment.Left);
            listView1.Columns.Add("Bölünebilme Değerleri", 150, HorizontalAlignment.Left);
            for (int i = 1; i <= Convert.ToInt64(textBox1.Text); i++)
            {
                ListViewItem item = new ListViewItem();
                item.Text = i.ToString();
                item.SubItems.Add(binet(i).ToString());

                item.SubItems.Add(bolunebilir(Convert.ToInt64(binet(i))).ToString());


                listView1.Items.Add(item);



            }
        }
    }
}


C kodunda yazılmış programın görüntüsü bu şekilde gördüğünüz gibi bütün bölünebilirlikleri sıralıyor.


fibonacci.png



Burada örnek olarak 18 yazdım ve bütün bölünebilirlikleri gösterdi. Yardım edeceklere şimdiden çok teşekkür ediyorum.

@Recep Baltaş , @beGi , @Fatih Apaydın , @Ahmet Aksoy ,
 
Değişkenlerin arasına ekleyin;
Kod:
String bolunebilir;

tv1.setTe.. ile başlayan satırı bununla değiştirin;
Kod:
bolunebilir += i.toString();

For döngüsünün altına bunu ekleyin;
Kod:
tv1.setText(bolunebilir);
 
C#'da kısaca böyle yapabilirsiniz.
Kod:
    class Program
    {
        static void Main(string[] args)
        {
            foreach (var divisor in GetDivisors(18))
                Console.WriteLine(divisor);
  
            Console.ReadLine();
        }

        static IEnumerable<int> GetDivisors(int n)
        {
            return from a in Enumerable.Range(2, n / 2)
                   where n % a == 0
                   select a;
        }
    }


Java için bu kodu buldum derlemedim. Deneyebilirsiniz.
Kod:
public class PrimeNum2 {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter the number :  ");
        long num = scanner.nextInt(), i;
        System.out.print("Divisors of " + num + " = 1 , ");
        for (i = 2; i < num / 2; i++) {
            if (num % i == 0) {
                System.out.print(i + " , ");
            }
        }
        System.out.println(num);
        scanner.close();
    }
}
 
Yardımlarınız için teşekkürler.

Değişkenlerin arasına ekleyin;
Kod:
String bolunebilir;

tv1.setTe.. ile başlayan satırı bununla değiştirin;
Kod:
bolunebilir += i.toString();

For döngüsünün altına bunu ekleyin;
Kod:
tv1.setText(bolunebilir);

Kod:
bolunebilir += i.toString();
Bölünebilir kısmında int i 'yi String den çağıramadığını söylüyor.

@fozbek

Arkadaşlar kodu bu şekilde düzenledim:
Kod:
package bn.com.blunmetest;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {
         private Button btn1;
        private TextView tv1;
        private EditText edt1;
        String bolunebilir;
      
       
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        btn1 = (Button) findViewById(R.id.btn1);
        tv1 = (TextView) findViewById(R.id.tv1);
        edt1 = (EditText) findViewById(R.id.edt1);
        
       
        btn1.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View v) {
               
               
                String sayi = String.valueOf(edt1.getText());
                int a = Integer.parseInt(sayi.toString());
                for (int i = 2; i<=a; i++ ) {
                    tv1.setText(bolunebilir);
                    if (a % i == 0) {
                       
                       
                        String b = String.valueOf(i);
                        bolunebilir += b ;
                       
                    }
                   
                }
               
               
               
               
            }
        });
    }  
}


Bus seferde 2 farklı sıkıntı baş gösterdi:

1- Sonucun başına null koyuyor program.
2- Her seferinde sonucun gösterildiği kısımın resetlenmesi gerekiyor. Böyle olmadığı için değerler üst üste biniyor.

Bunları nasıl halledebilirim?

Bir de değerlerin arasında nasıl virgül koyarım?
 
bolunebilir değişkenine başlangıç değeri vermeyi deneyin. String bolunebilir = ""; şeklinde düzenleyin. Virgülü ise şu şekilde ekleyebilirsiniz;
Kod:
bolunebilir += i.toString() + ",";
 
Arkadaşlar siz ikinize çok teşekkür ederim. Son bir sorum olacak. Sonuç kısmında çıkan değerlerin en sonuna virgül koyuyor, bunu nasıl kaldırabilirim?
 
Uyarı! Bu konu 10 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı