Wednesday, 22 June 2016

Mencari Bilangan Prima di Java / Android 1 sampai 100

Untuk kalian yang sedang belajar bahasa pemrograman, ada baiknya pelajari hal-hal yang mempertajam logic kalian. Misalnya saja berbagai hal perhitungan matematika kalian terapkan kedalam pemrograman, bisa-bisa saja kan untuk belajar?

Seperti contoh saya kali ini, mencari bilangan prima dari angka 1 - 100 (terserah kalian mau berapa) di Android, di java Netbeans juga bisa, karena sama sama Java hehhe


persiapan 1 layout.xml, 1 class.java

di activity_main.xml, komponen yang digunakan ada EditText, Button, ListView (Untuk menampung nilai bilang prima yang sudah di dapat)

berikut ini activity_main.xml
 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.putuguna.forpostingan.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:text="Hai! ini adalah tampilan bilangan prima di ListView" />

    <EditText
        android:id="@+id/inputText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="jumlah bilangan"/>

    <Button
        android:id="@+id/btn_hitung"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hitung"/>


    <ListView
        android:layout_marginTop="10dp"
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</LinearLayout>


Selanjutnya class MainActivity.java. Disini cukup kita gunakan ArrayAdapter default nya saja, tidak perlu buat custom adapter toh hanya menampilkan angka di Listview nya saja

package com.example.putuguna.forpostingan;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private List<Integer> items;
    private ArrayAdapter<Integer> arrayAdapter;
    private EditText inputNumber;
    private Button hitung;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = (ListView) findViewById(R.id.list);
        inputNumber = (EditText) findViewById(R.id.inputText);
        hitung = (Button) findViewById(R.id.btn_hitung);


        hitung.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String numberFromEditText = inputNumber.getText().toString();
                final int banyakBilangan = Integer.parseInt(numberFromEditText);
                hitungPrima(banyakBilangan);
            }
        });

    }

    private void hitungPrima(int number){
        items = new ArrayList<>();

        int bil;
        int i;
        int j;
        int bilPrima=0;

        for(i=1; i<number; i++){
            for(j=1; j<=i/2; j++){
                if(i%j==0){
                    bilPrima++;
                }
            }

            if(bilPrima==1){
                Log.d("TAG", "Bilangan Prima : " + i);
                items.add(i);
            }
            bilPrima=0;
        }

        arrayAdapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_list_item_1, items);
        listView.setAdapter(arrayAdapter);
    }


}


terlihat di koding saya memisahkan main logic pencari bilangan prima dengan method agar yang sedang belajar paham.

kenapa line dibawah ini berada di dalam Onclick Button?
String numberFromEditText = inputNumber.getText().toString();
Karena jika di ambil pada saat nilai EditText masih sama dengan null maka kalian akan dapat error semacam ini Exception invalid Int "" (tapi bisa saja sih diakali dengan kondisi if else)

kenapa line dibawah ini harus di parse ke int?
int banyakBilangan = Integer.parseInt(numberFromEditText);
Karena saat kita ambil value nya dari EditText itu tipe datanya masih String, sedangkan kita perlunya int jadi harus diparse ke integer dulu.

Semoga ada gambaran dan mengerti logicnya. Happy coding! have fun!!

Please post a polite comment and do not post a spam
EmoticonEmoticon