java - 单击按钮时使用 Android Studio 计算 2 个字符串中的元音数

标签 java android android-studio

我目前正在与 android studio 一起完成一项任务,需要做一些事情。

  1. 它需要在单击按钮时在 1 个字符串中显示 Hello,在第二个字符串中显示 World。

  2. 需要比较两个不同的字符串并显示它们是否相同

这两个部分我都工作得很好,但最后一部分我遇到了麻烦。

  • 它需要查看字符串 1 和字符串 2,并显示一个数字,显示这 2 个字符串中包含多少个元音
  • 我目前有 4 个 TextView 设置和 3 个按钮。

    1 个 TextView 来显示 Hello 1个 TextView 来显示世界 1 个 TextView ,用于显示上述字符串是否匹配

    我正在努力解决的最后一个问题是一个 TextView ,用于显示前两个字符串中包含的元音数量。

    我还有 3 个按钮,第一个按钮显示前 2 个 TextView

    第二个按钮用于比较前两个字符串

    最后一个按钮是显示元音的数量

    这是我为最终按钮和最终 TextView 设置的当前代码,我搞乱了很多事情,只是运气不佳。这个将加载,但按下按钮不会执行任何点击操作。

    此时没有错误消息,它没有显示任何内容。我需要能够比较字符串 1 和字符串 2(txt 和 txt2),然后显示这些字符串中有多少个元音,最终显示为“Hello World”。

    btn3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(view.getId()==R.id.button2)
                    {
                        String file_name=txt4.getText().toString()+".txt";
                        StringBuffer sBuffer = new StringBuffer();
                        int count=0;
                        FileInputStream fis;
                        try {
                            fis = openFileInput(file_name);
                            DataInputStream dataIO = new DataInputStream(fis);
                            String strLine = null;
                            while ((strLine = dataIO.readLine()) != null)
                            {
                                sBuffer.append(strLine +"\n");
                            }
                            dataIO.close();
                            fis.close();
                            for(int i=0;i<sBuffer.length();i++)
                            {
    
                                switch(sBuffer.charAt(i))
                                {
                                    case 'a':
                                    case 'e':
                                    case 'i':
                                    case 'o':
                                    case 'u':
                                    case 'A':
                                    case 'E':
                                    case 'I':
                                    case 'O':
                                    case 'U':
                                        count++;
                                        break;
                                }
                            }
                            Toast.makeText(getApplicationContext(),"Total Vovels Are : "+count,Toast.LENGTH_LONG).show();
                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                }
            }
    
    
    
    
    Full code:
    package com.example.project3;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.io.DataInputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class MainActivity extends AppCompatActivity {
        TextView txt;
        TextView txt2;
        TextView txt3;
        TextView txt4;
        Button btn;
        Button btn2;
        Button btn3;
        String file_name;
        String strFileContents;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            txt=(TextView) findViewById(R.id.txtHello);
            txt2=(TextView) findViewById(R.id.txtWorld);
            txt3=(TextView) findViewById(R.id.txtCompare);
            txt4=(TextView) findViewById(R.id.txtOccur);
            btn=(Button) findViewById(R.id.button3);
            btn2=(Button) findViewById(R.id.buttonCompare);
            btn3=(Button) findViewById(R.id.button2);
    
            btn.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    txt.setText(getResources().getString(R.string.txt_hello));
                    txt2.setText(getResources().getString(R.string.txt_world));
                    }
                });
    
            btn2.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    if (txt.equals(txt2))
                        txt3.setText(getResources().getString(R.string.txt_equal));
    
                    else
                        txt3.setText(getResources().getString(R.string.txt_not));
                    }
                });
            btn3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(view.getId()==R.id.button2)
                    {
                        String file_name=txt4.getText().toString()+".txt";
                        StringBuffer sBuffer = new StringBuffer();
                        int count=0;
                        FileInputStream fis;
                        try {
                            fis = openFileInput(file_name);
                            DataInputStream dataIO = new DataInputStream(fis);
                            String strLine = null;
                            while ((strLine = dataIO.readLine()) != null)
                            {
                                sBuffer.append(strLine +"\n");
                            }
                            dataIO.close();
                            fis.close();
                            for(int i=0;i<sBuffer.length();i++)
                            {
    
                                switch(sBuffer.charAt(i))
                                {
                                    case 'a':
                                    case 'e':
                                    case 'i':
                                    case 'o':
                                    case 'u':
                                    case 'A':
                                    case 'E':
                                    case 'I':
                                    case 'O':
                                    case 'U':
                                        count++;
                                        break;
                                }
                            }
                            Toast.makeText(getApplicationContext(),"Total Vovels Are : "+count,Toast.LENGTH_LONG).show();
                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                }
            }
            });
        }
    }
    
    

    最佳答案

    评论者是对的,你的代码没有执行是因为 if 语句。

    onClick(View view) 方法中的参数始终是被单击的 View ,因此在您的情况下它将是 btn3。这是为了给程序员提供对单击 View 的引用。

    从方法中删除 if block (或者将条件更改为 view.getId()==R.id.btn3 正如注释所说,但这很友善毫无意义),它应该有效。在这个简单的例子中,您不需要使用获得的 View 引用,因为您已经知道它将是 btn3

    关于java - 单击按钮时使用 Android Studio 计算 2 个字符串中的元音数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57894945/

    相关文章:

    android - 如何检查网络和 WI-FI 可用性

    android - 为特定应用开启miui省电

    java - 设置缩小的相机预览以获得正确的图像宽高比

    android - 如何使用 Kotlin 同时定位 JVM/Native 和 Android

    java - 在 java 中 - 对相似值进行分组

    java - 从 java.lang.OutOfMemoryError 中恢复

    java - 我们如何编写一个函数 List multiPop(int k) 来从堆栈中弹出 k 个元素或直到堆栈为空?

    java - Chromium WebView 不存在 (UnsupportedOperationException)

    java - 无法为 1572864KB 对象堆保留足够的空间 Android Studio

    android-studio - 关键字对象在Kotlin中是什么意思?