Преобразовать число в textview в int
Итак, я возился с программированием на Java/Android, и сейчас я пытаюсь сделать действительно простой калькулятор. Хотя я зациклен на этом вопросе. Это код, который у меня есть прямо сейчас, чтобы получить число, которое находится в текстовом представлении, и сделать его int
CharSequence value1 = getText(R.id.textView); int num1 = Integer.parseInt(value1.toString());
И из того, что я могу сказать, это вторая строка, которая вызывает ошибку, но я не уверен, почему она это делает. Он компилируется нормально, но когда он пытается запустить эту часть программы, мое приложение вылетает. И единственное, что есть в текстовом представлении, это числа.
Я также могу предоставить больше моего кода, если это необходимо
5 ответов
TextView tv = (TextView)findviewbyID(R.id.textView); int num = Integer.valueOf(tv.getText().toString());
Вы можете прочитать об использовании TextView.
tv = (TextView) findViewById(R.id.textView);
tv = new TextView(MyActivity.this);
Или, если вы раздуваете макет,
tv = (TextView) inflatedView.findViewById(R.id.textView);
Чтобы установить строку в tv , используйте tv.setText(some_string) или tv.setText(«this_string») . Если вам нужно установить целочисленное значение, используйте tv.setText(«» + 5) , так как setText() — это перегруженный метод, который может обрабатывать строковые и целочисленные аргументы.
Чтобы получить значение из tv , используйте tv.getText() .
Всегда проверяйте, может ли синтаксический анализатор обрабатывать возможные значения, которые может предоставить textView.getText().toString() . NumberFormatException генерируется, если вы пытаетесь проанализировать пустую строку («»). Или, если вы попытаетесь разобрать . .
String tvValue = tv.getText().toString(); if (!tvValue.equals("") && !tvValue.equals(. ))
TextView tv = (TextView)findviewbyID(R.id.textView); String text = tv.getText().toString(); int n; if(text.matches("\\d+")) //check if only digits. Could also be text.matches("5+") < n = Integer.parseInt(text); >else
var value = textview.text.toString().toIntOrNull() ?: 0
Как извлечь числа из textview Android Studio
Я хочу только получить текст, а затем использовать оператор if, показанный ниже, для выполнения задачи в зависимости от числа. Любая помощь будет хорошей.
4 ответа
Так как вы хотите разрешить алфавитно-цифровые символы, я бы сказал следующее:
String value = textView.getText().toString(); value = value.trim().replaceAll("[^0-9]","|").replaceAll("(\\D)\\1+","$1"); String values[] = value.trim().split("\\|"); int intValues[] = new int[values.length]; for(int i = 0; i < values.length; i ++)< intValues[i] = Integer.parseInt(values[i]); >//assuming you only care about the first number int number = intValues[0]; if(number == 1)< //do something >else if(number == 2)< //do something else >// etc.
Первая строка просто получает необработанный текст в ваш ввод. Вторая строка состоит из двух частей, первое, что она делает, это заменяет любые последовательности не цифр (0-9) символов с помощью символа «|». После того, как это сделано, мы возвращаемся и обрезаем любые последовательности труб одной трубой.
Imaging это ваш вклад: 1w22ee333rrr
После первого прохода мы оставляем это как: 1|22||333|||
После второго прохода мы оставляем его как 1|22|333|
Затем мы разделяем и сохраняем значения в массив String, зацикливаемся на этом массиве, анализируем все числа и сохраняем их в целочисленный массив. Это даст вам доступ ко всем вводимым числам, немного излишне, но у меня было время на руках, поэтому я просто дал вам это в качестве опции на случай, если вы найдете другое приложение для этого.
Вывод в TextView значение из переменной int
как вывести в TextView значение из переменной int? Пробовал функцию toString(), но компилятор говорит что такой метод для int не предназначен.
Вывод значения переменной int и прибавление к ней число по нажатию на кнопку в среде Android Stydio
кто может написать код, который будет по нажатию на кнопку прибавлять 10 к переменной,а потом.
Значение переменной типа int
Я хочу присвоить переменной типа int значение 2147483648, а в gdb я посмотрел значение переменной и.
Вывод переменной типа int на ЖКИ
Есть переменная unsigned int distance_cm. Вывожу на ЖКИ с помощью sprintf (lcd_buffer, "%d".
Максимальное значение переменной типа int
Если тип long в 2 раза больше чем int. Сколько максимум в int? В чём они измеряются в памяти? в.
Сообщение от Frai32
txtView.setText(Integer.toString(100500));
Добрый день. Вроде бы простой вопрос, и решение здесь изложено, но как.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
package com.example.user.counter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView TW; int i=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TW=findViewById(R.id.Text); TW.setText(Integer.toString(i)); } }
Проще некуда. В TextView выводится значение i — все нормально.
При попытке сделать счетчик приращения приложение крашится после запуска. Код вот такой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
package com.example.user.counter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { TextView TW; private Timer mTimer; private TimerTask mMyTimerTask; private int i=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); counter(); } public void counter() { mTimer = new Timer(); mMyTimerTask = new MyTimerTask(); mTimer.schedule(mMyTimerTask, 1000); } class MyTimerTask extends TimerTask { @Override public void run() { i++; TW=(TextView) findViewById(R.id.Text); TW.setText(Integer.toString(i)); } } }
Крашится именно при попытке вывода TW.setText(Integer.toString(i)); — если ее отключить — крашей нет.
TW.setText(Integer.toString(i));
Обо всём по порядку
Вы славно потрудились, когда создали свою первую переменную. Как видите, нужна всего одна строка. Если хотите увидеть значение переменной, можно вывести её в TextView на экране.
Эспериментировать Java-кодом совершенно естественно, и ничего страшного, если вдруг приложение рухнет.
Свои ответы и вопросы можете оставлять в комментариях.
Поздравляю всех, двигаемся дальше, всё получится! p.s. Очень толковый комментарий от AryehLaert1 на будущее: чем меньше видимость (глобальность) переменных по возможности, тем лучше. Так они не будут висеть в памяти, когда не используются.
Привет! почему в методе displayPrice применен следующий код priceTextView.setText(NumberFormat.getCurrencyInstance().format(number)); Я не дождался урока и написал private void displayPrice(int number)< TextView priceTextView = (TextView) findViewById(R.id.price_text_view); priceTextView.setText("$" + number);
public void submitOrder(View view)
package com.example.acerv.justjava; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; import java.text.NumberFormat; /** * This app displays an order form to order coffee. */ public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); >/** * Тут метод внутренней работы, который производит подсчет и заставляет запустить вывод на экран. У меня показаны рубли, поэтому стоимость кофе 200р */ int numberOrderCoffees = 2; public void submitOrder(View view) < display(numberOrderCoffees); displayPrice(numberOrderCoffees * 200); >/** * Вот тут идет связка для вывода на экран */ private void display(int number) < TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view); quantityTextView.setText("" + number); >private void displayPrice(int number) < TextView priceTextView = (TextView) findViewById(R.id.price_text_view); priceTextView.setText(NumberFormat.getCurrencyInstance().format(number)); >>