Java 为什么我';我在输入中得到了这样的空值

Java 为什么我';我在输入中得到了这样的空值,java,eclipse,algorithm,oop,Java,Eclipse,Algorithm,Oop,我需要在一个类中编写带有UI的简单计算器,在另一个类中编写带有模型的简单计算器,但如何正确访问另一个类中的数据?例如如果我按123,我会得到这样的文本输出空123?请帮帮我好吗?还有,如果我有错误,如何优化我的代码 视图类: package calc; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.

我需要在一个类中编写带有UI的简单计算器,在另一个类中编写带有模型的简单计算器,但如何正确访问另一个类中的数据?例如如果我按123,我会得到这样的文本输出空123?请帮帮我好吗?还有,如果我有错误,如何优化我的代码

视图类:

package calc;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.wb.swt.SWTResourceManager;

public class View extends ViewPart {
    public Text inputText;
    public Text inputText2;
    public Calculation calcul;

    public View()
    {
        calcul = new Calculation();
    }

    public void createPartControl(Composite parent) {
        Composite mainComposite = new Composite(parent, SWT.NONE);
        GridLayout gltop = new GridLayout(1, false);        
        gltop.numColumns = 1;       
        mainComposite.setLayout(gltop);
        //mainComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLUE));
        //ВЫзов верхнего и нижнего композита
        createTop(mainComposite);
        createBott(mainComposite);      
    }

    private void createTop(Composite parent)
    {
        GridLayout gltop = new GridLayout(1, false);        
        gltop.numColumns = 1;
        GridData data = new GridData(GridData.FILL_HORIZONTAL);     
        Composite topComposite = new Composite(parent, SWT.NONE);       
        topComposite.setLayout(gltop);
        topComposite.setLayoutData(data);
        //topComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_RED));

        inputText = new Text(topComposite, SWT.NONE);
        inputText.setLayoutData(data);
        inputText.setFont(SWTResourceManager.getFont("", 18, SWT.BOLD));
    }

    private void createBott(Composite parent)
    {
        GridLayout glbot = new GridLayout(1, false);        
        glbot.numColumns = 2;
        GridData data = new GridData(GridData.FILL_BOTH);       
        Composite botComposite = new Composite(parent, SWT.NONE);       
        botComposite.setLayout(glbot);
        botComposite.setLayoutData(data);
        //botComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_YELLOW));    


        createLeft(botComposite);       
        createRight(botComposite);      
    }

    private void createLeft(Composite parent)
    {           
        Composite leftComposite = new Composite(parent, SWT.NONE);  
        GridLayout glleft = new GridLayout(1, false);       
        GridData data = new GridData(GridData.FILL_HORIZONTAL); 
        glleft.marginTop = 26;
        leftComposite.setLayout(glleft);
        leftComposite.setLayoutData(data);
        //leftComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_CYAN)); 

        inputText2 = new Text(leftComposite, SWT.BORDER_SOLID);
        inputText2.setText("Hi");
        Button buttonMC = createFuncDigButtons(leftComposite, data, "MC", 'M');
        Button buttonMR = createFuncDigButtons(leftComposite, data, "MR", 'R');
        Button buttonMS = createFuncDigButtons(leftComposite, data, "MS", 'S');
        Button buttonMpl = createFuncDigButtons(leftComposite, data, "MC", 'P');
    }

    private void createRight(Composite parent)
    {
        GridLayout glright = new GridLayout(1, false);      
        GridData data = new GridData(GridData.FILL_BOTH);       
        Composite rightComposite = new Composite(parent, SWT.NONE);     
        glright.numColumns = 1;
        rightComposite.setLayout(glright);
        rightComposite.setLayoutData(data);
        //rightComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN));  

        createRightTop(rightComposite);
        createRightBot(rightComposite);
    }

    private void createRightTop(Composite parent)
    {
        Composite rightTopComposite = new Composite(parent, SWT.NONE);
        GridLayout glltop = new GridLayout(1, false);       
        GridData data = new GridData(GridData.FILL_BOTH);   
        glltop.numColumns = 3;
        glltop.marginBottom = 0;
        glltop.marginTop = 0;
        rightTopComposite.setLayout(glltop);
        rightTopComposite.setLayoutData(data);
        //rightTopComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_MAGENTA)); 

        Button buttonBack = createFuncDigButtons(rightTopComposite, data, "Backspace", 'B');
        Button buttonC = createFuncDigButtons(rightTopComposite, data, "C", 'C');
        Button buttonCE = createFuncDigButtons(rightTopComposite, data, "CE", 'E');
    }

    private void createRightBot(Composite parent)
    {
        GridLayout glright = new GridLayout(1, false);      
        GridData data = new GridData(GridData.FILL_BOTH);       
        Composite rightBotComposite = new Composite(parent, SWT.NONE);      
        glright.numColumns = 5;
        rightBotComposite.setLayout(glright);
        rightBotComposite.setLayoutData(data);
        //rightBotComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN));       
        Button button7 = createFuncDigButtons(rightBotComposite, data, "7", '7');
        Button button8 = createFuncDigButtons(rightBotComposite, data, "8", '8');
        Button button9 = createFuncDigButtons(rightBotComposite, data, "9", '9');
        Button buttonDev = createFuncDigButtons(rightBotComposite, data, "/", '/');
        Button buttonSQRT = createFuncDigButtons(rightBotComposite, data, "sqrt", 'R');
        Button button4 = createFuncDigButtons(rightBotComposite, data, "4", '4');
        Button button5 = createFuncDigButtons(rightBotComposite, data, "5", '5');
        Button button6 = createFuncDigButtons(rightBotComposite, data, "6", '6');
        Button buttonMult = createFuncDigButtons(rightBotComposite, data, "*", '*');
        Button buttonPer = createFuncDigButtons(rightBotComposite, data, "%", '%');
        Button button1 = createFuncDigButtons(rightBotComposite, data, "1", '1');
        Button button2 = createFuncDigButtons(rightBotComposite, data, "2", '2');
        Button button3 = createFuncDigButtons(rightBotComposite, data, "3", '3');
        Button buttonMinus = createFuncDigButtons(rightBotComposite, data, "-", '-');
        Button buttonDev1 = createFuncDigButtons(rightBotComposite, data, "1/x", '1');
        Button button0 = createFuncDigButtons(rightBotComposite, data, "0", '0');
        Button buttonPM = createFuncDigButtons(rightBotComposite, data, "+/-", 'p');
        Button buttonD = createFuncDigButtons(rightBotComposite, data, ".", '.');       
        Button buttonPlus = createFuncDigButtons(rightBotComposite, data, "+", '+');        
        Button buttonR = createFuncDigButtons(rightBotComposite, data, "=", '=');
    }

    public Button createFuncDigButtons(Composite parent, GridData gridData, final String digit, final char formethod)
    {
        Button button = new Button(parent, SWT.PUSH);
          button.setLayoutData(gridData);
          button.setText(String.valueOf(digit));
          button.addSelectionListener(new SelectionListener() {
            @Override
            public void widgetSelected(SelectionEvent arg0) {
             // update(formethod);
                calcul.getDigit(formethod);
                inputText.setText(calcul.num1);
                System.out.println("f " + calcul.num1);
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent arg0) {
              /* do nothing */
            }
          });
          button.addKeyListener(new KeyListener() {

            @Override
            public void keyReleased(KeyEvent arg0) {
            }

            @Override
            public void keyPressed(KeyEvent arg0) {
                calcul.getDigit(arg0.character);
            }
        });
        return button;
    }

    public void setFocus() {
    }
}
和伪模型类:

package calc;

public class Calculation {

    public String num1;
    public String num2;

    public Calculation()
    {
    }

    public char getDigit(char a)
    {
        char value = a;
        switch (a) {
        case 'q':

            break;

        default:
            num1 += value;
            break;
        }
        System.out.println("getbyclass" + a + "bb" +num1);
        return value;       
    }
}

请帮帮我,因为我需要帮助才能理解将num1和num2字符串初始化为
“”


否则,字符串将设置为null,当您将其与另一个字符串连接时,它将被解析为
“null”
将num1和num2字符串初始化为

否则,字符串将设置为null,当您将其与另一个字符串连接时,它将被解析为“null”

,这将有助于:

在函数
createFuncDigButtons
中,将第三个参数从
final String digit
更改为
final char digit
,并传入一个字符

在您的
处理程序中,按
键更改此行

calcul.getDigit(arg0.character);
对此

calcul.getDigit(digit);
您还需要在
计算
构造函数中初始化字符串变量。

这将有助于:

在函数
createFuncDigButtons
中,将第三个参数从
final String digit
更改为
final char digit
,并传入一个字符

在您的
处理程序中,按
键更改此行

calcul.getDigit(arg0.character);
对此

calcul.getDigit(digit);

您还需要在
计算
构造函数中初始化字符串变量。

也是按此顺序计算的最简单方法:我按1+2全部按文本3,我按*2我将按6,依此类推?简单的方法?也是最简单的按顺序计算的方法:我按1+2全部得到文本3,我按*2我得到6等等?简单的方法?我需要这个按钮文本,和字符methods@JohnSmith您不需要传递字符串。String.valueOf有一个字符重载。我需要这个用于按钮文本,char用于methods@JohnSmith您不需要传递字符串。String.valueOf具有字符重载。