Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何去掉我的计算程序字符串中的空格_Java_User Interface - Fatal编程技术网

Java 如何去掉我的计算程序字符串中的空格

Java 如何去掉我的计算程序字符串中的空格,java,user-interface,Java,User Interface,我想知道如何在我的计算器程序中计算空格。现在,它被设置为仅当每个值后面都有空格时才起作用。我希望它能够工作,如果有多个空间以及。我试着做一些事情(在我的动作中,在“=”符号测试下执行),但没有真正起作用。因此,我想知道如何使它考虑多个空格(例如,如果在下一个值之前有多个空格,那么它应该认识到这一点,并删除多余的空格)。谢谢 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Arra

我想知道如何在我的计算器程序中计算空格。现在,它被设置为仅当每个值后面都有空格时才起作用。我希望它能够工作,如果有多个空间以及。我试着做一些事情(在我的动作中,在“=”符号测试下执行),但没有真正起作用。因此,我想知道如何使它考虑多个空格(例如,如果在下一个值之前有多个空格,那么它应该认识到这一点,并删除多余的空格)。谢谢

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

public class GUI extends JFrame implements ActionListener
{
JPanel buttonPanel, topPanel, operationPanel;
JTextField display = new JTextField(20);

doMath math = new doMath();
String s = "";
String b= "";
//int counter;

JButton Num1;
JButton Num2;
JButton Num3;
JButton Num4;
JButton Num5;
JButton Num6;
JButton Num7;
JButton Num8;
JButton Num9;
JButton Num0;

JButton Add;
JButton Sub;
JButton Mult;
JButton Div;
JButton Eq;
JButton Clr;
JButton Space;
public GUI()
{
    super("Calculator");
    setSize(400,400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel mainPanel = new JPanel();
    mainPanel.setLayout(new GridLayout (2,1));

    buttonPanel = new JPanel();        
    buttonPanel.setLayout(new GridLayout(5, 4));
    buttonPanel.add(Num1 = new JButton("1"));
    buttonPanel.add(Num2 = new JButton("2"));
    buttonPanel.add(Num3 = new JButton("3"));
    buttonPanel.add(Num4 = new JButton("4"));
    buttonPanel.add(Num5 = new JButton("5"));
    buttonPanel.add(Num6 = new JButton("6"));
    buttonPanel.add(Num7 = new JButton("7"));
    buttonPanel.add(Num8 = new JButton("8"));
    buttonPanel.add(Num9 = new JButton("9"));
    buttonPanel.add(Num0 = new JButton("0"));        
    buttonPanel.add(Clr = new JButton("C"));
    buttonPanel.add(Eq = new JButton("="));
    buttonPanel.add(Add = new JButton("+"));
    buttonPanel.add(Sub = new JButton("-"));
    buttonPanel.add(Mult = new JButton("*"));
    buttonPanel.add(Div = new JButton("/"));
    buttonPanel.add(Space = new JButton("Space")); 

    Num1.addActionListener(this);
    Num2.addActionListener(this);
    Num3.addActionListener(this);
    Num4.addActionListener(this);
    Num5.addActionListener(this);
    Num6.addActionListener(this);
    Num7.addActionListener(this);
    Num8.addActionListener(this);
    Num9.addActionListener(this);
    Num0.addActionListener(this);
    Clr.addActionListener(this);
    Eq.addActionListener(this);
    Add.addActionListener(this);
    Sub.addActionListener(this);
    Mult.addActionListener(this);
    Div.addActionListener(this);
    Space.addActionListener(this);

    topPanel = new JPanel();         
    topPanel.setLayout(new FlowLayout());
    topPanel.add(display);

    add(mainPanel);

    mainPanel.add(topPanel, BorderLayout.NORTH);
    mainPanel.add(buttonPanel, BorderLayout.SOUTH);

    setVisible(true);

}

public void actionPerformed(ActionEvent e) 
{
    JButton source = (JButton)e.getSource();
    String text = source.getText();
    int counter = 0;

    if (text.equals("=")) 
    {
        doMath math = new doMath();
        for(int i = 0; i <b.length(); i++)
        {

            String c = b.substring(i,(i+1));
            String d = b.substring((i+1),(i+2));
            String temp = "";
            if( c.equals(" ") && c.equals(d))
            {
                temp = b.substring(0,i)+(b.substring(i+1));
                b = temp;
            }
        }           
        int result = math.doMath1(b);

        String answer = ""+result;
        display.setText(answer);                   

    }
    else if(text.equals("Space"))
    {

        counter ++;
        if(counter <2)
        {            
            b+= " ";
            display.setText(b);
        }
        else 
        {
            b+="";
            display.setText(b);
        }
    }

    else if (text.equals("C"))
    {
        b = "";

        display.setText(b);
    }
    else 
    {

        b += (text);

        display.setText(b);

    }
    counter = 0; 

}
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.util.ArrayList;
公共类GUI扩展JFrame实现ActionListener
{
JPanel按钮面板、顶部面板、操作面板;
JTextField显示=新的JTextField(20);
域数学=新域();
字符串s=“”;
字符串b=“”;
//整数计数器;
JButton Num1;
JButton Num2;
JButton Num3;
JButton Num4;
JButton Num5;
jbuttonnum6;
JButton Num7;
JButton Num8;
jbuttonnum9;
JButton Num0;
JButton-Add;
JButton子;
吉布顿·穆特;
杰布顿分区;
JButton方程;
JButton-Clr;
JButton空间;
公共图形用户界面()
{
超级(“计算器”);
设置大小(400400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel=新的JPanel();
主面板设置布局(新网格布局(2,1));
buttonPanel=新的JPanel();
设置布局(新的网格布局(5,4));
buttonPanel.add(Num1=新的JButton(“1”));
buttonPanel.add(Num2=新的JButton(“2”));
buttonPanel.add(Num3=新的JButton(“3”);
buttonPanel.add(Num4=新的JButton(“4”);
buttonPanel.add(Num5=新的JButton(“5”);
buttonPanel.add(Num6=新的JButton(“6”);
添加(Num7=新的JButton(“7”);
buttonPanel.add(Num8=新的JButton(“8”);
add(Num9=新的JButton(“9”);
add(Num0=新的JButton(“0”);
add(Clr=newjbutton(“C”);
添加(Eq=newjbutton(“=”);
add(add=newjbutton(“+”);
buttonPanel.add(Sub=newjbutton(“-”);
add(Mult=newjbutton(“*”);
add(Div=newjbutton(“/”);
add(Space=newjbutton(“Space”);
Num1.addActionListener(这个);
Num2.addActionListener(这个);
Num3.addActionListener(此);
Num4.addActionListener(这个);
Num5.addActionListener(这个);
Num6.addActionListener(这个);
Num7.addActionListener(这个);
Num8.addActionListener(这个);
Num9.addActionListener(这个);
Num0.addActionListener(此);
Clr.addActionListener(此);
Eq.addActionListener(本);
Add.addActionListener(这个);
Sub.addActionListener(本);
Mult.addActionListener(此);
Div.addActionListener(此);
Space.addActionListener(this);
topPanel=新的JPanel();
setLayout(新的FlowLayout());
topPanel.add(显示);
添加(主面板);
主面板。添加(topPanel,BorderLayout.NORTH);
主面板。添加(按钮面板,边界布局。南);
setVisible(真);
}
已执行的公共无效操作(操作事件e)
{
JButton source=(JButton)e.getSource();
String text=source.getText();
int计数器=0;
if(text.equals(“=”))
{
域数学=新域();

对于(int i=0;i而不是使用子字符串,请使用
扫描器
,它将
字符串
作为参数


或者,您可以在按下“空格”按钮后禁用该按钮,并在按下其他按钮时将其重新启用。

此方法需要了解正则表达式。对于每个字符串,只需将多个连续空格的任何实例替换为单个空格即可。换句话说,使用正则表达式,您可以替换
“\\s+”
,意思是“多个空格”,带有“
,这只是空格字符

例如:

String c = ...
c = c.replaceAll("\\s+", " ");

如果b不是空的,您可以尝试使用
charAt
查看上一个字符,如果它是空格,则什么也不做。

我倾向于使用作为计算器,如中所示或在更好的GUI中所示。只有当有两个空格时,它才起作用。有没有办法使它继续重新检查,只要序列中有两个以上的空格paces?我该怎么做呢?@Big_Fan我已经给出了两个答案,你这是什么意思?对不起,禁用空格按钮使用
java.util.Scanner
遍历所有标记(子字符串),它很好地处理了多个空格。@Big_Fan
String str = "your     string";
Pattern _pattern = Pattern.compile("\\s+");
Matcher matcher = _pattern.matcher(str);
str = matcher.replaceAll(" ");