我目前正在与 android studio 一起完成一项任务,需要做一些事情。
它需要在单击按钮时在 1 个字符串中显示 Hello,在第二个字符串中显示 World。
需要比较两个不同的字符串并显示它们是否相同
这两个部分我都工作得很好,但最后一部分我遇到了麻烦。
- 它需要查看字符串 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/