Ένα πρόγραμμα που μετατρέπει από το δεκαδικό προς το δυαδικό σύστημα. Δέχεται ως είσοδο τον δεκαδικό αριθμό (ακόμη και με κλασματικό μέρος αρκεί να οριστεί με τελεία, π.χ. 996.55) και επιστρέφει το δυαδικό αποτέλεσμα.
Προσπάθησα να το φτιάξω όσο πιο κοντά στον τρόπο που υπολογίζουμε και εμείς το αποτέλεσμα..
- Κώδικας: Επιλογή όλων
import javax.swing.*;
class toBin {
int integer; //το ακέραιο μέρος του αριθμού
float real; //το κλασματικό μέρος του αριθμού
StringBuffer result=new StringBuffer();
toBin(float real){ //παίρνει ως είσοδο αριθμό και ξεχωρίζει το ακέραιο
integer=(int) real; //από το κλασματικό μέρος
this.real=real-integer;
}
void toBinary(){
for(int i=0;integer>0;i++){
//εργαζόμαστε όπως θα κάναμε και θεωρητικά
if(integer%2!=0){
integer--;
result.append('1');
}
else {
result.append('0');
}
integer=(int)integer/2;
}
result.reverse();
// αν έχει κλασματικό μέρος το θέτουμε επιπλέον στο result(αποτέλεσμα)
if(real!=0.00){
result.append('.');
do{
real*=2;
result.append((int)real);
real-=(int)real;
}while(real!=0.0000);
}
}
void show(){ //εμφανίζει το δυαδικό αποτέλεσμα
JOptionPane.showMessageDialog(null, "The number in binary is\n"+result
,"result",JOptionPane.INFORMATION_MESSAGE);
}
}
Και η κλάση που φτιάχνει το αντικείμενο (και περιέχει τη main)..
- Κώδικας: Επιλογή όλων
import javax.swing.*;
public class decToBin {
public static void main(String args[]){
String s=JOptionPane.showInputDialog(null, "Write a number",
"decimal to binary",JOptionPane.QUESTION_MESSAGE);
if(s!=null){ //αν δόθηκε κάτι να δημιουργηθεί αντικείμενο
toBin binary=new toBin(Float.parseFloat(s));
binary.toBinary();
binary.show();
}
}
}
Spoiler: show
Off topic:
Λοιπόν, πώς σας φαίνεται;