2016-03-27 17 views
2

JLabel dizileri ve JTextfield aracılığıyla kullanıcı girdisi için ondalık sayıyı ikiliye dönüştüren bir program yazıyorum. Metin kutusunda hem ondalık sayıya hem de her basıldığında görüntülenen ikili numaraya bir tane ekleyen bir Adım Düğmem var. Bununla birlikte, sayı 256'ya ulaştığında, öndeki 1'i bırakarak, 00000000'e "etrafını sarmak" gerekiyordu. Bunu özellikle özel JLabel dizisine erişim olmadan Dinleyicide nasıl yapacağımı bilmiyorum (bu yüzden, eğer num, 256 değerine eşitse, o zaman dizi 0'a metin yazıyorsa). Tüm sahip olduğum ile çalışmak için metin kutusundaki ondalık sayı ve ikili yönteme ondalık sayıdır.Bir dizide ikili sayıyı "etrafına sarmak" nasıl yapılır?

int i = Integer.parseInt(box.getText()); 

if(i == 256); 
{ 
    display.setValue(0); //setValue is method to convert dec. to binary 
    box.setText("" + i); //box is the JTextfield that decimal # is entered in 
    } 

ve

if(i == 256) 
    { 
    i = i - i; 
    display.setValue(i); 
    } 

ama ikisi de çalıştı ve ben fikir gelmiyor: denedim. Biraz yardımın için minnettar olurum. Uzun açıklama için özür dilerim ve şimdiden teşekkürler!

public class Display11 extends JPanel 
    { 
    private JLabel[] output; 
    private int[] bits; 
    public Display11() 
    { 
    public void setValue(int num)//METHOD TO CONVERT DECIMAL TO BINARY 
    { 
    for(int x = 0; x < 8; x++) //reset display to 0 
    { 
     bits[x] = 0; 
    } 
    int index = 0; //increments in place of a for loop 
    while(num > 0) 
    { 
    int temp = num%2; //gives lowest bit 
    bits[bits.length - 1 - index] = temp; //set temp to end of array 
    index++; 
    num = num/2; //updates num 

    if(num == 0) //0 case 
    { 
    for(int x = 0; x < 8; x++) 
     { 
     output[x].setText("0"); 
     } 
    } 

    } 
    for(int x = 0; x < bits.length; x++) 
    { 
    output[x].setText("" + bits[x]); //output is the JLabel array 
    }        //bits is a temporary int array 

    //display the binary number in the JLabel 

    public class Panel11 extends JPanel 
    { 
    private JTextField box; 
    private JLabel label; 
    private Display11 display; 
    private JButton button2; 
    public Panel11() 
    { 
    private class Listener2 implements ActionListener //listener for the incrementing button 
     { 
     public void actionPerformed(ActionEvent e) 
     { 

     int i = Integer.parseInt(box.getText()); //increments decimal # 
     i++; 
     box.setText("" + i); 
     display.setValue(i); //converts incremented decimal # to binary 

    } 

    } 

cevap

1

kod

if(i == 256); 
{ 
    display.setValue(0); //setValue is method to convert dec. to binary 
    box.setText("" + i); //box is the JTextfield that decimal # is entered in 
} 

noktalı virgül if vücudu sonlandırır iki böcek görmek ve (yerine 0 arasında) boxi sıfırlanır.

if (i == 256) 
{ 
    display.setValue(0); 
    box.setText("0"); 
    i = 0; // <-- in case something else depends on i 
} 
İlgili konular