Boleh jadi kamu membenci sesuatu, padahal ia amat baik bagimu,
dan boleh jadi (pula) kamu menyukai sesuatu padahal ia amat buruk bagimu;
Allah mengetahui, sedang kamu tidak mengetahui. (QS. 2:216)
Jadwal Sholat untuk wilayah Jakarta dan Sekitarnya, Kamis, 24 Mei 2012/3 Rajab 1433 H : Imsak 4:26:59 - Shubuh 4:33:25 - Terbit 5:55:33 - Dzuhur 11:49:46 - Ashar 15:11:48 - Maghrib 17:44:03 - Isya' 18:57:40 WIB

Penulis Topik: HELP for JAVA  (Dibaca 1289 kali)


Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« pada: 26 Maret 2008, 08:04:34 »
Assalamualaikum

Mas-mas yang udah expert, saya baru belajar Java nih. masih bikin class buat coding-coding sederhana
and kebetulan ada problem yang saya ga bisa selesaiin

saya bikin program sederhana dengan main methodnya agar si USER memasukkan dua input angka (tipe Float)
lalu program saya akan menghitung nilai rata-rata dari 2 nilai tersebut  :toe: aduh malunya program kecil-kecilan

program dicompile dan semua lancar-lancar aja ketika saya masukkan angka seperti apa juga
namun masalah mulai muncul saat saya mulai bertanya
bagaimana kalau saya memasukkan karakter/huruf (char/string) ke kotak input
di mana data tersebut(yang dalam coding saya akan di rubah ke tipe int dari String(Input)
menjadi tidak valid lagi

nah kalo ada yang tau gimana solusinya tolong dong gmana caranya buat tambahan code mungkin atau saya perlu deklarasi class baru atau class scanner entah dengan looping atau if
supaya program saya saat menerima input huruf bisa tetep jalan dan ga error ;D
di bawah ini saya cantumin codingnya :malu: lagi-lagi malu

Kode: [Pilih]
import static java.lang.System.in;
import java.io.*;
import javax.swing.*;

class NumberTester
{
    public static void main(String[] args) throws IOException
    {
        String inPut;
        float num, num2, avg;
 
        inPut = JOptionPane.showInputDialog(null, "Please enter a value");
        num = Float.parseFloat( inPut );
       
        inPut = JOptionPane.showInputDialog(null, "Please enter another value");
        num2 = Float.parseFloat( inPut );
       
        avg = (num + num2)/2F;
       
        System.out.println("The average value is " + avg);
       
        System.out.println("Thank you, Good Bye!");
    }
}
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #1 pada: 26 Maret 2008, 08:20:43 »
Kutip
(yang dalam coding saya akan di rubah ke tipe int dari String(Input)

maaf maksud saya float :toe:

oh iya kalo ada solusi dijelasin yah jangan cuma kodenya aja. pliz pliz
sesepuh anis kalo bisa bantu juga tolong yah :bercanda:
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline thevaj

  • myQ Pro-Aktif
  • *
  • Tgl Gabung: Jan 2007
  • Tulisan: 929
  • Lokasi: jakarta
  • Jenis kelamin: Pria
  • cah moderat
    • Lihat Profil
« Jawab #2 pada: 26 Maret 2008, 10:25:09 »
klo kuamati ya..

num = Float.parseFloat( inPut );

ini rawan terjadi exception, coba klo ternyata inPut nya ada karakter khusus misal : 45$5^
ntar ga bisa di parsing ke float.  Exception nya yg muncul tuh java.lang.NumberFormatExcepti on.

caranya adalah dengan validasi, kamu bisa ambil tuh FloatValidator dari lbrary commons-validator-1.3.0.jar, donlod aja di situsnya jakarta apache. Ntar setelah di validasi, baru di parsing.

validasinya misal begini :

        FloatValidator floatValidator = new FloatValidator();

   if(floatValidator.isValid(inPut)){
       System.out.println("valid");
   }else System.out.println("not valid");

jangan lupa, tambahkan dulu library commons-validator ke projek anda.  O0 O0

« Edit Terakhir: 26 Maret 2008, 10:31:35 oleh thevaj »

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #3 pada: 26 Maret 2008, 11:16:43 »
Kutip
kamu bisa ambil tuh FloatValidator dari lbrary commons-validator-1.3.0.jar, donlod aja di situsnya jakarta apache. Ntar setelah di validasi, baru di parsing.

dari yang jdknya aja emang ga ada yah mas librarynya? jadi harus donlot ke situ yah?. :hmmm:

Kutip
ni rawan terjadi exception, coba klo ternyata inPut nya ada karakter khusus misal : 45$5^
ntar ga bisa di parsing ke float.  Exception nya yg muncul tuh java.lang.NumberFormatExcepti on.

iya ini yang jadi bikin saya kesel :marah:
masalahnya yang masukin input kan belom tentu masukin nilai float juga :o

Kutip
validasinya misal begini :

        FloatValidator floatValidator = new FloatValidator();

   if(floatValidator.isValid(inPut)){
       System.out.println("valid");
   }else System.out.println("not valid");

jangan lupa, tambahkan dulu library commons-validator ke projek anda.

import classnya nanti kaya gmana tuh mas kodennya ntar ? kasihin contoh dong :jaim:
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline thevaj

  • myQ Pro-Aktif
  • *
  • Tgl Gabung: Jan 2007
  • Tulisan: 929
  • Lokasi: jakarta
  • Jenis kelamin: Pria
  • cah moderat
    • Lihat Profil
« Jawab #4 pada: 26 Maret 2008, 14:51:02 »
jdk?? ga ada..itu kan bawaan dari sun, sedang validator itu dari apache, jakarta projek.

import classnya ya :

import org.apache.commons.validator. routines.FloatValidator;


gitu aja koq bro...

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #5 pada: 08 April 2008, 11:44:33 »
mas-mas saya ada kesulitan import classnya nih
saya dah download dari jakarta apache dan ada file zip yang udah saya ekstrak di desktop dengan nama filenya

commons-validator-1.3.1

saya kan make compilernya Blue J
saat saya import saya cuma milih folder itu
terus diimport deh

setelah saya import mulai saya edit kodenya dengan instruksi yang mas berikan
tapi pas dicompile katanya ga ada class nya  :D

gmana dong nih solusinya :'(
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline GhiF

  • myQ Pejuang
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 4.129
  • Lokasi: Depok
  • Jenis kelamin: Pria
  • . . . . . . .
    • Lihat Profil
« Jawab #6 pada: 08 April 2008, 11:49:59 »
library itu udah dimasukin di projectnya blum?
(\__/) Lembut tanpa ketegasan adalah kelemahan
(='.'=) Tegas tanpa kelembutan adalah kesewenangan
('')_('') Keduanya akan menimbulkan fitnah

(\__/) Kebaikan itu ada 2 pilar : Benar & Santun
(^_^) Benar ga Santun = bikin siapapun akan melecehkan kebenaran
('')_('')Santun ga Benar = Pendusta

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #7 pada: 10 April 2008, 02:12:50 »
nah itu dia pegimana caranya yak :hihi:
saya ga pernah pake class laen selaen yang dari javanya sih :jaim:
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline thevaj

  • myQ Pro-Aktif
  • *
  • Tgl Gabung: Jan 2007
  • Tulisan: 929
  • Lokasi: jakarta
  • Jenis kelamin: Pria
  • cah moderat
    • Lihat Profil
« Jawab #8 pada: 10 April 2008, 09:33:07 »
btw, ente ngodingnya pake tools apa? netbeans, eclipse, ato manual pakai notpad?

Offline GhiF

  • myQ Pejuang
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 4.129
  • Lokasi: Depok
  • Jenis kelamin: Pria
  • . . . . . . .
    • Lihat Profil
« Jawab #9 pada: 10 April 2008, 10:32:17 »
ya kalo mo bikin project kan musti nentuin dulu folder projectnya yang mao dipake dimana. Pindahin deh tuh librarynya di dalem folder project. misal bikin folder lagi namanya lib. didalemnya ada library2 laen yang akan dipake diaplikasi kita.

(\__/) Lembut tanpa ketegasan adalah kelemahan
(='.'=) Tegas tanpa kelembutan adalah kesewenangan
('')_('') Keduanya akan menimbulkan fitnah

(\__/) Kebaikan itu ada 2 pilar : Benar & Santun
(^_^) Benar ga Santun = bikin siapapun akan melecehkan kebenaran
('')_('')Santun ga Benar = Pendusta

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #10 pada: 12 April 2008, 22:05:28 »
Saya coding and compilernya pake software namanya blue J soalnya dah dari kampus, kelas pemrograman emang pake ini compilernya(Java)
nah setelah saya download yang kelas common dari apache itu foldernya saya taro di deskto.
nah saya yang ga ngerti setelah saya klik import and edit code yang dah saya tulis pas dicompile class nya ga exist kata compilernya
pliz pliz mohon kesabarannya bantuin :toe:
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline anto

  • myQ Pro-Aktif
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 802
  • Lokasi: jakarta-depok
  • Jenis kelamin: Pria
  • NEW ONE
    • Lihat Profil
« Jawab #11 pada: 23 April 2008, 09:55:13 »
Saya coding and compilernya pake software namanya blue J soalnya dah dari kampus, kelas pemrograman emang pake ini compilernya(Java)
nah setelah saya download yang kelas common dari apache itu foldernya saya taro di deskto.
nah saya yang ga ngerti setelah saya klik import and edit code yang dah saya tulis pas dicompile class nya ga exist kata compilernya
pliz pliz mohon kesabarannya bantuin :toe:

sama donk,di kampusku ,aku juga make BlueJ. jangan2 kita satu kampus....
bersihkan diri gapailah cinta, cinta.........ILLAHI

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #12 pada: 24 April 2008, 03:07:18 »
serius  :(
saya di CA nih kampusnya
situ dmana  :)
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #13 pada: 24 April 2008, 03:32:50 »
Eh mas-mas yang dah bantuin makasih yah! akhirnya bisa juga
saya import and bikin package baru di proyek saya
dan ternyata berhasil. setiap saya masukin input yang bukan nomor
saya bikin supaya ngasih tau kalo inputnya ga valid dan langsut close program

tapi ada masalah lagi nih, saya pengen misalnya si user masukin input yang ga valid floatnya
and supaya dia enter lagi dari parsing pertama gmana yah pake if and loopingnya
nih kode yang dah saya ganti

Kode: [Pilih]
import java.io.*;
import javax.swing.*;
import MyPackage.FloatValidator;

class NumberTester
{
    public static void main(String[] args) throws IOException
    {
        String inData;
        float num=0, num2=0, avg;
       
        FloatValidator floatValidator = new FloatValidator();
     
       
        inData = JOptionPane.showInputDialog(null, "Enter an Integer Value.");
        if(floatValidator.isValid(inData))
        {
        num = Float.parseFloat( inData );
        }
        else
        {
            System.out.println("Invalid Input!");
            System.exit(0);
        }
       
        inData = JOptionPane.showInputDialog(null, "Enter another Integer Value.");
        if(floatValidator.isValid(inData))
        {
        num2 = Float.parseFloat( inData);
        }
        else
        System.out.println("Invalid Input!");
       
       
        avg = (num + num2)/2F;
       
        System.out.println("The average value is " + avg);
       
        System.out.println("Good-bye for now");
    }
}
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline dark_ipl

  • myQ Aktivis
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 1.836
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • wink..
    • Lihat Profil
« Jawab #14 pada: 24 April 2008, 07:31:38 »
import MyPackage.FloatValidator;  << yang ini ngambil darimana ya?

edited
=========
udah ketemu.. kudu donlot .jar nya dulu..
http://repo1.maven.org/maven2/commons-validator/commons-validator/1.3.1/

tapi teteup gak ngerti pertanyaannya.. :hihi:

maap.. karna gak baca post sebelumnya.. %peace%
« Edit Terakhir: 24 April 2008, 07:53:31 oleh dark_ipl »
http://blog.dark-ipl.com ............................. ............

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #15 pada: 24 April 2008, 11:03:56 »
itu saya bikin package sendiri di proyek saya terus copy class dari package yang saya download dari apache.commons itu
yah kebetulan namnya saya pake MyPackage
jadi ya ngimportnya begitu deh :D
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline dark_ipl

  • myQ Aktivis
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 1.836
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • wink..
    • Lihat Profil
« Jawab #16 pada: 24 April 2008, 11:05:43 »
iya.. udah bisa run koq..

tapi masalahnya yang ente tanyain itu gimana saya belum ngerti.. :D
http://blog.dark-ipl.com ............................. ............

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #17 pada: 24 April 2008, 20:16:53 »
gini lho kisanak
di code yang saya cantumin terakhir saya tuh ngebuat saat user ngemasukin data yang ga bisa diparsing ke float supaya dapet pesan yang bilang kalo datanya itu invalid dan saya masukkan dalam body if statemenya supaya program di close

nah yang saya pengen tuh gmana memodifikasi kode tersebut supaya kalau si user masukkin data yang salah(ga bisa diparse ke float)
method pertama yang JOptionPane.showInputDialog itu diulang terus sampe dia masukkin data yang bener
begitu lho :toe:
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline dark_ipl

  • myQ Aktivis
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 1.836
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • wink..
    • Lihat Profil
« Jawab #18 pada: 25 April 2008, 07:08:32 »
oh.. gitu toh kisanak.. :hihi:

maap.. gak konek

gini aja, pas di bagian ini:
Kode: [Pilih]
if(floatValidator.isValid(inData))
        {
        num = Float.parseFloat( inData );
        }
        else
        {
            System.out.println("Invalid Input!");
            System.exit(0);
        }

ganti jadi seperti ini:
Kode: [Pilih]
while(!floatValidator.isValid(inData)){
        inData = JOptionPane.showInputDialog(null, "Invalid Input!. Enter an Integer Value.");
}
num = Float.parseFloat( inData );

untuk num2 juga sama

jadi kode keseluruhannya seperti ini:
Kode: [Pilih]
import java.io.*;
import javax.swing.*;
import org.apache.commons.validator.routines.FloatValidator;

class NumberTester
{
    public static void main(String[] args) throws IOException
    {
        String inData;
        float num=0, num2=0, avg;
       
        FloatValidator floatValidator = new FloatValidator();
       
        inData = JOptionPane.showInputDialog(null, "Enter an Integer Value.");
       
        while(!floatValidator.isValid(inData)){
        inData = JOptionPane.showInputDialog(null, "Invalid Input!. Enter an Integer Value.");
        }
        num = Float.parseFloat( inData );
        inData = JOptionPane.showInputDialog(null, "Enter another Integer Value.");
       
        while(!floatValidator.isValid(inData)){
        inData = JOptionPane.showInputDialog(null, "Invalid Input!. Enter another Integer Value.");
        }
        num2 = Float.parseFloat( inData );
       
        avg = (num + num2)/2F;
       
        System.out.println("The average value is " + avg);
       
        System.out.println("Good-bye for now");
    }
}

:)
« Edit Terakhir: 25 April 2008, 07:12:46 oleh dark_ipl »
http://blog.dark-ipl.com ............................. ............

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #19 pada: 25 April 2008, 10:22:43 »
waduh mas. setelah saya modifikasi malah jadi ga jalan :D
setiap saya salah masukkin data yg invalid memang keluar box yang di method whilenya
tapi setelah saya masukkin angka malah tetep boxnya itu-itu terus yang jalan
ga lanjut diparse gmana tuh  ::)
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline dark_ipl

  • myQ Aktivis
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 1.836
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • wink..
    • Lihat Profil
« Jawab #20 pada: 25 April 2008, 10:30:06 »
^di saya bisa koq, coba kamu kopi seluruh program yang kurubah.. tapi paket validatornya tetap seperti punya kamu.. ;)

auk tuh yang parsing, blom nemu caranya.. :D
http://blog.dark-ipl.com ............................. ............

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #21 pada: 25 April 2008, 11:09:16 »
Eh iya mas bisa setelah saya kopi mentah yang punya si mas
ternyata kesalahan ada di saya


Kode: [Pilih]
while(!floatValidator.isValid(inData)){
        [b]inData[/b] = JOptionPane.showInputDialog(null, "Invalid Input!. Enter an Integer Value.");
}
num = Float.parseFloat( inData );

di bagian yang ini saya lupa nulis indata yang dibold itu
jadinya ga diterima mo saya masukkin apaan juga hehe
makasih yo mas ngerti deh ngerti
tadinya saya mo kondisinnya supaya pake float validator yang invalidnya gmana
tapi pas saya coba floatValidator.inValid ga bisa
ga taunya cuma dikasih tanda seru aja toh buat kondisi yang berlawanan.
ehehe jadi dapet ekstra ilmu deh 8-)

-------------------------------------------------------
oh iya nih mas saya masih ada pengen tau lagi
di program saya yang ini kan saya cuma minta 2 data masuk dari si user
nah kalo saya mau bikin looping supaya program saya tetep minta input dari user sampe seberapa banyakpun
dan distop saat user dah konfirmasi datanya cuma segitu

dan nanti di akhir kalkulasi semua nilai yang dah dimasukin
dibagi jumlah data yang dimasukkin deh rata-ratanya
itu gmana yah

jadi program saya ga cuma bisanya buat 2 input doang
sebanyak apapun bisa gitu :toktok:
ajarin lagi dong
harap sabar yah, ngasih ilmu pahalanya gede lho ;D
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline dark_ipl

  • myQ Aktivis
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 1.836
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • wink..
    • Lihat Profil
« Jawab #22 pada: 25 April 2008, 11:17:29 »
:hihi: cuma kurang tanda ! yak.. :D

hmm.. kalo gak mau berenti logika nya kasih aja while di awal dengan syarat event tertentu.. misal: sampe mencet tombol berenti kalo gak dipencet maka jalan terus.. ntar counting berapa kali dia masukin variabel.. hasil count itu dibuat jadi pembagi.. ;)

cobain dulu.. :D
http://blog.dark-ipl.com ............................. ............

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #23 pada: 25 April 2008, 12:06:00 »
Kutip
misal: sampe mencet tombol berenti kalo gak dipencet maka jalan terus

saya sih dah dapet bayangan gmana kodenya mas
tapi ini dia nih
kasih contoh dong gmana supaya identifikasi misalnya saya harus pake class apa
ato bkin frame sendiri ato gmana

jadi nanti ada dua tombol di situ
satu misalnya tombol kalkulasi satu lagi tombol masukkan data
jadi datanya nanti sebanyak berapa kali si user masukkin data itu
gmana yah contohnya
agak blank nih yang di sininya ::)
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline dark_ipl

  • myQ Aktivis
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 1.836
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • wink..
    • Lihat Profil
« Jawab #24 pada: 25 April 2008, 14:59:32 »
cari aja contoh bikin kalkulator pakai java.. %peace%
http://blog.dark-ipl.com ............................. ............

Offline hakimrie

  • myQ Aktivis
  • *
  • Tgl Gabung: Jan 2008
  • Tulisan: 2.052
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • Freedom for Palestine
    • Lihat Profil
    • hakim
« Jawab #25 pada: 28 April 2008, 16:55:41 »
saran nih ya, kalau masih pemula, sebaknya gak usah pake package - packe yang bukan java standard, atau library tambahan
apalagi kalau cuma permasalahan validasi kayak gitu, pake JDK biasa terus putar otak seditik pasti ketemu gimana caranya.

jika saya tidak salah tangkap, masalahnya gini kan?
mau parsing masukan user ke float:
kasus:
1. user masukan int atau float ,dsb (numeric biasa) : parsing normal InsyaaAllah berhasil
2. user masukan bilangan campuran numeric + karakter/string : masalah, perlu ditanganin
3. user masukin string/karakter doang: masalah perlu ditanganin
4. user memasukkan numeric tapi Puaaaaaaaaaaaaaaaaaaaaaaanjan g : masalah, overflow / out of range exception, perlu ditanganin

nah masalahnya kan sudah jelas (berarti separuh persoalan sudah selesai), coba berfikir lebih keras sedikit lagi (masih mahasiswa kan?), nanti kalau memang benar - benar buntu, boleh konsultasi lagi deh :)

tipsku: jangan langsung di parsing, validasi dulu masukannya

Saya Yakin Kamu Bisa, jadi jangan mudah menyerah  O0

wish u luck :)
~{Semoga Allah berkahi tiap kata yang mengalir dari ujung jemari ini}~
Pernikahan Ochie & Hakim

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #26 pada: 01 Mei 2008, 03:13:14 »
udah kok mas yang di kode yg dikasih sebelumnya kan saya validasi dulu sebelom diparsing, tapi yah itu saya ngikutin saran sebelumnya yang make floatValidator dari apache. masalahnya kalo mau pake yang dari javanya saya ga tau mau pake library yg mana
dan setelah dimodifikasi kodenya pake paket yg saya import yah bisa juga sih, lumayan, walau saya masih kabur soal baca kelas-kelas yang ada di packagenya sendiri

oh iya ini saya memodifikasi kode yang sebelumnya jadi lebih kompleks
mohon diperhatikan sebentar yah ;D

Kode: [Pilih]
import java.io.*;
import javax.swing.*;
import MyPackage.FloatValidator;

class Average
{
    public static void main(String[] args) throws IOException
    {
        String inPut;
        int data=0;
        float num=0, exnum=0;
       
        FloatValidator floatValidator = new FloatValidator();

       
        inPut = JOptionPane.showInputDialog(null, "Please enter an integer value.");
        while (!floatValidator.isValid(inPut))
        {
            inPut = JOptionPane.showInputDialog(null, "Invalid input. Please enter an integer value.");
        }
        num = Float.parseFloat(inPut);
        data++;
       
        int n = JOptionPane.showConfirmDialog(null, "Would you like to enter another integer value?", "Average Value", JOptionPane.YES_NO_OPTION);
        if (n == JOptionPane.YES_OPTION)
        {
            inPut = JOptionPane.showInputDialog(null, "Please enter an integer value.");
            while (!floatValidator.isValid(inPut))
                {
                    inPut = JOptionPane.showInputDialog(null, "Invalid input. Please enter an integer value.");
                }
         exnum = Float.parseFloat(inPut);
         num += exnum;
         data++;
         JOptionPane.showMessageDialog(null, "The average value is " + num/data);
        }
       
       
        else
        {
            JOptionPane.showMessageDialog(null, "The average value is " + num/data);
            System.exit(0);
        }
    }
}

di kode ini saya dapat masalah juga nih
saya kan tadinya berniat supaya selama si User mengklik tombol OK di pertanyaan konfirmasi apakah dia mau memasukkan nilai lagi, maka nilai yang dimasukkan ditambahkan ke total nilai dan jumlah data yg dimasukkan
tapi setelah saya run kode ini ternyata cuma stop sampai dua data saja
gmana yah caranya memodifikasinya biar si User bisa memasukkan data sebanyak yg dia mau dan mendapatkan hasil nilai rata-rata dari jumlah nilai yang dimasukkan dibagi jumlah data yg dimasukkan :malu:

tolong bantuannya :toe:
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline hakimrie

  • myQ Aktivis
  • *
  • Tgl Gabung: Jan 2008
  • Tulisan: 2.052
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • Freedom for Palestine
    • Lihat Profil
    • hakim
« Jawab #27 pada: 01 Mei 2008, 04:59:24 »
pake loop mas; nih saya kasih contoh yang console app, biar tambah bingung ada gambaran
nah, kalau mau, silahkan tes kode ini, terus tes di console :).

clue: showInputDialog itu kan ada return valuenya, jika OK atau cancle, return value itu yang akan dijadikan acuan
untuk terus loop atau gak.

afwan, gak langsung kasih solusi pake swing, soalnya biar seru  %peace%
Kode: [Pilih]
import java.io.*;
public class AvgInput{
  private static BufferedReader stdin =
    new BufferedReader( new InputStreamReader( System.in ) );
  public static void main(String[] args)
  {
      boolean next = true;
      int num = 0;
      float sum = 0;
      float avg = 0;
      // loop terus selama masih tidak memasukkan 0  <- loop seperti ini yang harus mas tambahkan di kode mas.
      do{
        // minta masukan
        String input;
        try{
          System.out.print("Masukkan nilai (0 untuk keluar) : ");
          input = stdin.readLine();
          // validasi
          // implementasi validasi di sini
          // casting
            float val = Float.parseFloat(input);
            sum += val;
            next = (val == 0) ? false : true;
            if (next) num++;
          }catch (Exception ex){
            ex.printStackTrace();
          }
         
        }while (next);
        // hitung rata - rata
        avg = (num == 0) ? 0 : (sum/num);
         
        System.out.println("jumlah = "+sum);
        System.out.println("rata - rata = " + avg);
    }
  }
« Edit Terakhir: 01 Mei 2008, 07:38:39 oleh hakimrie »
~{Semoga Allah berkahi tiap kata yang mengalir dari ujung jemari ini}~
Pernikahan Ochie & Hakim

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #28 pada: 06 Mei 2008, 01:16:06 »
waduh mas saya masih banyak yang ga ngerti ekspresinya
dicontohin aja dong, saya kan masih dasar :D
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline hakimrie

  • myQ Aktivis
  • *
  • Tgl Gabung: Jan 2008
  • Tulisan: 2.052
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • Freedom for Palestine
    • Lihat Profil
    • hakim
« Jawab #29 pada: 06 Mei 2008, 02:41:19 »
oo, ini ana kasih contoh dan sedikit penjelasan, nanti kalau masih bingung tanya saj  O0

Kode: [Pilih]
import java.io.*;
import javax.swing.*;

public class SwingAvgInput{
  public static void main(String[] args) throws IOException
  {
      boolean next = true;
      int num = 0;
      float sum = 0;
      float avg = 0;
    // loop terus selama masih tidak Cancel
      do{
        // minta masukan
        String input;
        try{
          input = JOptionPane.showInputDialog(null,"Masukkan nilai integer");
          // periksa masukan, jika Cancel berarti input = null (ShowInputDialog return null jika Cancel di klik)
            if (input != null )
            {
              // langsung coba di casting/parsing ke float
              float val = Float.parseFloat(input);
              sum += val;
              next = true;
              if (next) num++;
            }else{
              next = false;
            }
          }catch (Exception ex){
            JOptionPane.showMessageDialog(null, "Data yang anda masukkan tidak valid, masukkan angka yang lain yang valid \n ","ERROR", JOptionPane.ERROR_MESSAGE);
            continue;
          }
         
        }while (next);
        // hitung rata - rata
        avg = (num > 0) ? (sum/num) : 0;
       
        JOptionPane.showMessageDialog(null, "jumlah seluruh data yang dimasukkan = "+ sum + "\nrata - ratanya = " + avg);
    }
  }

keterangan:
1. fungsi parsing (Float.ParseFloat(value)), kalau gagal akan melempar (throws) exception, jadi dalam hal ini kesalahan masukan dari user di deteksi dari ada atau tidaknya exception. hal inilah yang dimanfaatkan sebagai validasi dari input user. jadi kita tangkap saja exception yang muncul, jika ada berarti user salah memasukkan input, jika tidak maka user memasukkan bilangan yang valid. untuk menangkap exception tersebut kita memanfaatkan sintaks ini:
Kode: [Pilih]
try{
    // suatu ekspresi yang memungkinkan terjadinya exception
}catch(Exception e){
   // yang dilakukan jika terjadi exception
}// secara optional bisa ditambahkan catch yang lain yang spesifik dan
//finally {
    // ekspresi yang akan selalu di eksekusi baik ada exception maupun tidak
//}

jika terjadi exception, berarti user salah memasukkan input (masukan tidak valid); untuk melanjutkan ke loop selanjutnya digunakan keyword "continue;"
alih - alih keyword "break;" yang berarti keluar dari loop.

2. JOptionPane.ShowInputDialgo(...) akan mengembalikan nilai null jika button yang dipilih adalah Cancel, jadi dengan mendeteksi apakah masukan (input)   bernilai null atau tidak kita bisa mendeteksi apakah user memilih button Cancel.

3. sintaks seperti ini (fungsi ternary)
Kode: [Pilih]
avg = (num > 0) ? (sum/num) : 0; artinya jika nilai num lebih besar dari 0 (atau ekspresi num>0 bernilai true) maka assign nilai avg dengan nila (sum/num) sebaliknya (ekspresi num>0 bernilai false) maka avg akan di assign dengan nilai 0.

4. silahkan ditanyakan yang belum difahami .

selamat belajar  O0
~{Semoga Allah berkahi tiap kata yang mengalir dari ujung jemari ini}~
Pernikahan Ochie & Hakim

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #30 pada: 08 Mei 2008, 01:19:31 »
mas itu try termasuk bagian kodenya jg? fungsinya buat apa yah :o
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #31 pada: 08 Mei 2008, 01:31:22 »
Kode: [Pilih]
import java.io.*;
import javax.swing.*;
import MyPackage.FloatValidator;

public class avg
{
    public static void main(String[] args) throws IOException
    {
        boolean next = true;
        float num = 0, exnum = 0, average = 0;
        int data = 0;
        Object[] option = {"Enter another value", "Calculate value"};
        String inPut;
       
        FloatValidator floatValidator = new FloatValidator();
       
       
        inPut = JOptionPane.showInputDialog(null, "Please enter an integer value");
       
        while (!floatValidator.isValid(inPut))
        {
            inPut = JOptionPane.showInputDialog(null, "Invalid input! Please enter an integer value");
        }
       
        num = Float.parseFloat(inPut);
        data++;
       
        do
        {
            try
            {
                inPut = JOptionPane.showInputDialog(null, "Please enter another integer value");
                if (inPut == null)
                {
                    exnum = Float.parseFloat(inPut);
                    num += exnum;
                    next = true;
                    data++;
                    if (next) data++;
                }
                else
                {
                    next = false;
                }
            }
            catch (Exception ex)
            {
                JOptionPane.showMessageDialog(null, "Invalid input! please enter a valid integer value", "ERROR", JOptionPane.ERROR_MESSAGE);
                continue;
            }
        } while (next);
       
        average = ( data > 0 ) ? (num/data) : 0;
       
        JOptionPane.showMessageDialog(null, "The average value is " + average);
    }
}

mas ini saya dah bikin kode berdasarkan instruksinya mas
tapi tetep kok cuma sampe 2 data aja yah dia minta inputnya
padahal saya pengen tes sampe berapa aja saya mau :'(
apa ada yg salah? :siul:
« Edit Terakhir: 08 Mei 2008, 01:45:02 oleh Ahazveroz »
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline hakimrie

  • myQ Aktivis
  • *
  • Tgl Gabung: Jan 2008
  • Tulisan: 2.052
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • Freedom for Palestine
    • Lihat Profil
    • hakim
« Jawab #32 pada: 08 Mei 2008, 04:10:45 »
iya, kode antum salah, salah naruh Loop; sebelum kita bahas satu persatu (setelah melihat pertanyaan antum,
sepertinya kita masih perlu mengulang beberapa teori pemrograman di java  :hmmm:); ane mau nanya, antum sudah mencoba mengkompile
code program yang ana kasih belum? dengan kode tersebut antum sudah tidak perlu FloatValidator() lagi  O0 ; coba tes kode yang ane kasih
untuk bilangan yang normal dan bilangan yang salah (misal dimasukkan string)

ane gak bisa langsung ngetes code antum (ada package mypackage yang ane gak punya  %peace%), tapi kesalahannya ada pada letak loopnya, coba diganti kayak gini:

Kode: [Pilih]
import java.io.*;
import javax.swing.*;
import MyPackage.FloatValidator;

public class avg
{
    public static void main(String[] args) throws IOException
    {
        boolean next = true;
        float num = 0, exnum = 0, average = 0;
        int data = 0;
        Object[] option = {"Enter another value", "Calculate value"};
        String inPut;
       
        FloatValidator floatValidator = new FloatValidator();
       
       
        do   // scope loop-nya di perbesar, dipindah disini, jadi permintaan input akan terus di ulang juga
        {
            inPut = JOptionPane.showInputDialog(null, "Please enter an integer value");
            while (!floatValidator.isValid(inPut))
            {
                inPut = JOptionPane.showInputDialog(null, "Invalid input! Please enter an integer value");
            }
           
            num = Float.parseFloat(inPut);
            data++;
           

            try
            {
                inPut = JOptionPane.showInputDialog(null, "Please enter another integer value");
                if (inPut == null)
                {
                    exnum = Float.parseFloat(inPut);
                    num += exnum;
                    next = true;
                    data++;
                    if (next) data++;
                }
                else
                {
                    next = false;
                }
            }
            catch (Exception ex)
            {
                JOptionPane.showMessageDialog(null, "Invalid input! please enter a valid integer value", "ERROR", JOptionPane.ERROR_MESSAGE);
                continue;
            }
        } while (next);
       
        average = ( data > 0 ) ? (num/data) : 0;
       
        JOptionPane.showMessageDialog(null, "The average value is " + average);
    }
}

~{Semoga Allah berkahi tiap kata yang mengalir dari ujung jemari ini}~
Pernikahan Ochie & Hakim

Offline dark_ipl

  • myQ Aktivis
  • *
  • Tgl Gabung: Apr 2006
  • Tulisan: 1.836
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • wink..
    • Lihat Profil
« Jawab #33 pada: 08 Mei 2008, 07:35:51 »
masih aman dan terkendali kek nya trit ini.. :D
http://blog.dark-ipl.com ............................. ............

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #34 pada: 08 Mei 2008, 12:09:39 »
wah mas setelah saya coba kode yang mas modifikasi tetep aja tuh cuma sampe dua input program langsung mengkalkulasikan nilai rata-ratanya
dan yang lebih anehnya saat saya memasukkan input 12 dan input 14, di mana seharusnya nilai rata-ratanya adalah 13
saat eksekusi tampilan hasil hanya 12 yang ditampilkan

ada apa yah. saya tadi di kelas dah berulang kali ngotak-ngatik tapi tetep aja nihil hasilnya
tapi kebetulan tadi saya di kelas dapet looping pake kondisi for
itu bisa, tapi tetep aja saya harus menginisialisasi nilai batas inputnya

ok saya ga mau jauh-jauh ke yang for dulu
yang penting yg kode ini dulu deh diselesaiin nih solusinya
hehe jadi malu ampe 3 halaman ga mudeng-mudeng :hihi:
sabar yah, namanya jg belajar :toe:
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline hakimrie

  • myQ Aktivis
  • *
  • Tgl Gabung: Jan 2008
  • Tulisan: 2.052
  • Lokasi: Bandung
  • Jenis kelamin: Pria
  • Freedom for Palestine
    • Lihat Profil
    • hakim
« Jawab #35 pada: 08 Mei 2008, 15:17:03 »
kode itu memang salah kok 
tahu salahnya dimana gak? 
« Edit Terakhir: 16 Juli 2009, 09:53:38 oleh hakimrie »
~{Semoga Allah berkahi tiap kata yang mengalir dari ujung jemari ini}~
Pernikahan Ochie & Hakim

Offline Ahazveroz

  • myQ Perambah
  • *
  • Tgl Gabung: Nov 2007
  • Tulisan: 276
  • Lokasi: San Diego, CA
  • Jenis kelamin: Pria
    • Lihat Profil
« Jawab #36 pada: 09 Mei 2008, 00:26:19 »
dimane dong :mewe:
jahat ana malah diketawain :'(
"Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be done."Isaac Newton

Offline revoLUTHIon

  • myQ Junior
  • *
  • Tgl Gabung: Jan 2007
  • Tulisan: 65
  • Lokasi: bkeasi
  • Jenis kelamin: Pria
  • ya ALLAH paksakan diriku
    • Lihat Profil
« Jawab #37 pada: 16 Juli 2009, 09:28:28 »
baru mulai nih :)
hiduplah dalam keindahan iman