当前位置: 首页 > 知识库问答 >
问题:

如何更正If Else语句

唐利
2023-03-14

我的程序有问题,我在使用if-else语句

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

“尝试运行程序,用户将输入一个“字符串”,如果用户按“排序”,它将计算元音和辅音。我需要的是如果用户不会输入“字符串”,例如双精度或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个答案

璩浩广
2023-03-14

string1定义为一个字符串,所以它总是一个字符串

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

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

可以使用正则表达式[a-zA-Z]允许空格*

宋琛
2023-03-14

您可以先检查它是否是字符代码的字母:

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,如果是,然后检查它是元音还是辅音。

马俊
2023-03-14

你能这样试试吗;

   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);
                }
 类似资料:
  • 我用R编写了以下代码,效果很好。但是,假设我必须对具有多个级别的因子变量应用类似的代码(

  • 问题内容: 我正在上高中AP计算机科学课程。 我决定在我们的一个实验室里发表一个声明,只是为了玩弄,但是我遇到了这个错误。 我问了一个关于Stackoverflow 的问题,以找出如何正确执行它,并且我所做的完全如答案之一所示。我真的不明白为什么编译器想要一个语句(至少这是我假设的要求),我也不知道如何使用。似乎希望重新启动的部分是一个变量,但是重新启动只是将程序拉回到第10行的标签,以便用户可以

  • 我正在尝试获取与登录用户在同一年级的同学列表。 我有这个功能 但我得到了错误: 原因:异常[EclipseLink-6069](Eclipse Persistence Services-2.5.0.V20130507-3FAAC2B):org.Eclipse.Persistence.exceptions.QueryException异常说明:此表达式中的字段[Rocnik.IdRocnik]在此上

  • 我想用javascript/php实现法语、俄语等外语的拼写更正。对于英语拼写检查器,我可以使用编辑距离算法从英语词典中检索单词(词典是使用Trie构建的),并返回最频繁的单词。我还找到了关于这方面的文章,例如。http://stevehanov.ca/blog/index.php?id=114.我认为对于外语来说,同样的方法也是有用的。 我相信必须为不同的语言提供API,但我不想在我的应用程序中

  • 我正在使用.exists()方法来确保文件不存在,如果存在,它会向文件添加一个数字。但是,使用原始文件名创建文件是不起作用的,并且在创建另一个文件时基本上覆盖了先前的文件名。 [1:47:40:359]已写入文件:myFileName1 [1:47:40:361]已写入文件:myFileName1

  • 给定数据帧,如下所示 我想通过dplyr 基于< code>var的值添加一个col 。 基于以下逻辑。 如果或则,如果或则 一起使用,如下所示