如何更正其他声明

时间:2014-11-25 14:32:49

标签: java if-statement joptionpane

我的程序出现问题,我使用if-else语句

在我的程序中,我试图计算字符串上的元音和辅音。我已经知道怎么做了,我的问题是我想添加一个"错误"消息,如果用户输入非字符串,它将显示错误框。

"尝试运行该程序,用户将输入一个" String"如果用户按"排序"它会 算上元音和辅音。我需要的是用户不会输入"字符串"例如是double或int ...等,只要它不是字符串就会显示错误框。

/**
 *
 * @author Patrick
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class VowelandConsonant extends JFrame{
    private JLabel stringl, resultl,resultl1;
    private JTextField stringtf, resulttf,resulttf1;
    private JButton cb,eb;
    private CButtonHandler cHandler;
    private EButtonHandler eHandler;



public VowelandConsonant(){

    stringl=new JLabel("Enter String:",SwingConstants.CENTER);
    resultl=new JLabel("Vowel:",SwingConstants.CENTER);
    resultl1=new JLabel("Consonants:",SwingConstants.CENTER);

    stringtf=new JTextField(10);
    resulttf=new JTextField(10);
    resulttf1=new JTextField(10);

        eb=new JButton("Exit");
        eHandler= new EButtonHandler();
        eb.addActionListener(eHandler);

        cb=new JButton("Sort");
        cHandler= new CButtonHandler();
        cb.addActionListener(cHandler);


        setTitle("Vowels and Consonants");
        Container p=getContentPane();
        p.setLayout(new GridLayout(7,2));

        p.add(stringl);
        p.add(stringtf);
        p.add(resultl);
        p.add(resulttf);
        p.add(resultl1);
        p.add(resulttf1);
        p.add(cb);
        p.add(eb);

        setSize(500,400);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
}
         private class CButtonHandler implements ActionListener{
            public void actionPerformed(ActionEvent e){


                String string1;

                string1 = stringtf.getText();
                string1 = string1.toLowerCase();
                int vowels = 0;
                int consonants = 0;
                for (String retval: string1.split(" ")){
                     for (int i = 0; i < retval.length(); i++)
                {
                        char ch = retval.charAt(i);
                        if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
                        {
                                vowels++;
                        }
                        else if(!string1.equals(string1)){
                            String a="Not a String Please try again ^_^";
                            JOptionPane.showMessageDialog(null,a,"ERROR",JOptionPane.ERROR_MESSAGE);
                        }

                        else 
                        { 
                                consonants++;
                        }



                }
            resulttf.setText(""+vowels);
            resulttf1.setText(""+consonants);
         vowels=0;
         consonants=0;
      }


            }
         }

            private class EButtonHandler implements ActionListener{
            public void actionPerformed(ActionEvent e){
                System.exit(0);
            }}
            public static void main(String[]args){
                VowelandConsonant a=new VowelandConsonant();
            }}

3 个答案:

答案 0 :(得分:0)

您可以先查看字母是否为字母代码:

if(((int)ch >= 65 && (int)ch <= 90) || ((int)ch >= 97 && (int)ch <= 122))
{
    if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U')
    {
         vowels++;
    }
    else
    {
        consonants++;
    }
}
else
{
   String a="Not a String Please try again ^_^";
   JOptionPane.showMessageDialog(null,a,"ERROR",JOptionPane.ERROR_MESSAGE);
}

这将检查它是A-Z还是a-z,如果是,则检查它是否是元音或辅音。

答案 1 :(得分:0)

你能尝试这样吗;

   for (String retval: string1.split(" ")){
          if(!retval.matches("[a-zA-Z]+")){
                  String a="Not a String Please try again ^_^";
                  JOptionPane.showMessageDialog(null,a,"ERROR",JOptionPane.ERROR_MESSAGE);
            }
           for (int i = 0; i < retval.length(); i++)
            {
                    char ch = retval.charAt(i);
                    if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
                    {
                            vowels++;
                    } else 
                    { 
                            consonants++;
                    }

            }
    }

检查非字符串,如:

                else if(!retval.matches("[a-zA-Z]+")){
                    String a="Not a String Please try again ^_^";
                    JOptionPane.showMessageDialog(null,a,"ERROR",JOptionPane.ERROR_MESSAGE);
                }

答案 2 :(得分:0)

string1被定义为一个String,所以它总是一个String

您要做的是使用正则表达式验证用户输入。您只想允许字母字符但没有数字

if (string1.matches("[a-zA-Z]+")) {
    //good input
}
else {
    //bad input
}

您可以使用正则表达式[a-zA-Z] *

来允许空格