Я не брал ни одной строки, введенной пользователем, и преобразовал эту строку в целое число путем приведения.Как я это делал, он показывает NumberFormatException.
Это потому, что вы пытаетесь прочитать строку из EditText без ввода еще как целое число, которое не является допустимым числом с помощью следующего кода (см. комментарий):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// your view binding code with findViewById
// ...
// here you're trying to read the EditText value,
// but no user input yet because you've only inflate it before.
final String plntxt= plainText.getText().toString();
final String noOflines= noOfLines.getText().toString();
// the noOfLines is "", an empty string.
int lines = 0;
try {
// this raise an exception because empty string is not number.
lines = Integer.parseInt(noOflines);
}
catch (NumberFormatException e){
}
...
}
Я попытался создать эту переменную вне блока try, а затем типизировать ее внутри блока, я также сделал эту переменную "lines" final, когда к ней обращались вучебный класс.затем он просит меня инициализировать переменную, я тоже это сделал, но, похоже, это мне не помогает.
То, что вы сделали, - это нанесло больший урон вашему коду, потому что вы сделали значение переменной постоянным.Оба значения plntxt
и noOflines
всегда будут ""
, пустой строкой.Итак, ваш следующий код не будет работать:
final String plntxt= plainText.getText().toString();
final String noOflines= noOfLines.getText().toString();
...
final int finalLines = lines;
encryptBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// this won't work because plntxt is always empty string
// and finalLines is always invalid number.
encryption(plntxt, finalLines);
}
});
Простое исправление можно сделать, переместив весь получатель текста внутрь вашего onClick
метода:
encryptBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String plntxt= plainText.getText().toString();
String noOflines= noOfLines.getText().toString();
int lines = 0;
try {
lines = Integer.parseInt(noOflines);
}
catch (NumberFormatException e){
}
encryption(plntxt, finalLines);
}
});