我的程序出现问题,我使用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();
}}
答案 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] *
来允许空格