cómo obtener texto de textview

si configuré texto en textview de esa manera, lo cual no es problema:

tv.setText("" + ANS[i]); 

esto simplemente se está haciendo de esta manera.

  String a = tv.getText().toString(); int A = Integer.parseInt(a); 

Pero en caso de establecer valor en textView.

  tv1.setText(" " + X[i] + "\n" + "+" + " " + Y[i]); 

que es así

  5 +9 

Tengo un problema, este valor de cómo obtenerlo.

No lo he probado, pero debería darte una idea general de la dirección que debes tomar.

Para que esto funcione, voy a suponer algunas cosas sobre el texto de TextView :

  1. TextView consiste en líneas delimitadas con "\n" .
  2. La primera línea no incluirá un operador (+, -, * o /).
  3. Después de la primera línea, puede haber un número variable de líneas en TextView que incluirán un operador y un número.
  4. Un operador siempre será el primer Char de una línea.

Primero tenemos el texto:

 String input = tv1.getText().toString(); 

Luego lo dividimos por cada línea:

 String[] lines = input.split( "\n" ); 

Ahora tenemos que calcular el valor total:

 int total = Integer.parseInt( lines[0].trim() ); //We know this is a number. for( int i = 1; i < lines.length(); i++ ) { total = calculate( lines[i].trim(), total ); } 

El método calcular debería verse así, suponiendo que sepamos que el primer Char de una línea es el operador:

 private int calculate( String input, int total ) { switch( input.charAt( 0 ) ) case '+': return total + Integer.parseInt( input.substring( 1, input.length() ); case '-': return total - Integer.parseInt( input.substring( 1, input.length() ); case '*': return total * Integer.parseInt( input.substring( 1, input.length() ); case '/': return total / Integer.parseInt( input.substring( 1, input.length() ); } 

EDITAR

Entonces, lo anterior, como se indica en el comentario a continuación, hace el cálculo de "izquierda a derecha", ignorando el orden normal (+ y / antes de + y -).

Lo siguiente hace el cálculo de la manera correcta:

 String input = tv1.getText().toString(); input = input.replace( "\n", "" ); input = input.replace( " ", "" ); int total = getValue( input ); 

El método getValue es un método recursivo y debería verse así:

 private int getValue( String line ) { int value = 0; if( line.contains( "+" ) ) { String[] lines = line.split( "\\+" ); value += getValue( lines[0] ); for( int i = 1; i < lines.length; i++ ) value += getValue( lines[i] ); return value; } if( line.contains( "-" ) ) { String[] lines = line.split( "\\-" ); value += getValue( lines[0] ); for( int i = 1; i < lines.length; i++ ) value -= getValue( lines[i] ); return value; } if( line.contains( "*" ) ) { String[] lines = line.split( "\\*" ); value += getValue( lines[0] ); for( int i = 1; i < lines.length; i++ ) value *= getValue( lines[i] ); return value; } if( line.contains( "/" ) ) { String[] lines = line.split( "\\/" ); value += getValue( lines[0] ); for( int i = 1; i < lines.length; i++ ) value /= getValue( lines[i] ); return value; } return Integer.parseInt( line ); } 

Casos especiales que el método recursivo no maneja:

  • Si el primer número es negativo, por ejemplo, -3 + 5 * 8.
  • Operadores dobles, por ejemplo, 3 * -6 o 5 / -4.

Además, el hecho de que Integers números Integers podría dar algunos resultados "extraños" en algunos casos, como por ejemplo, 5/3 = 1.

dividir con el signo + de esta manera

 String a = tv.getText().toString(); String aa[]; if(a.contains("+")) aa = a.split("+"); 

ahora convierta la matriz

 Integer.parseInt(aa[0]); // and so on 

Prueba como este

 tv1.setText(" " + Integer.toString(X[i]) + "\n" + "+" + " " + Integer.toString(Y[i])); 

Tienes que hacer lo siguiente:

 a=a.replace("\n"," "); a=a.trim(); String b[]=a.split("+"); int k=Integer.ValueOf(b[0]); int l=Integer.ValueOf(b[1]); int sum=k+l; 

Si es la sum de todos los números que desea, hice un pequeño fragmento para usted que puede manejar tanto + como – usando una expresión regular (dejé algunas llamadas impresas para ayudar a visualizar lo que sucede):

  final String string = " " + 5 + "\n" + "-" + " " + 9+"\n"+"+"+" "+5; //Or get the value from a TextView final Pattern pattern = Pattern.compile("(-?).?(\\d+)"); Matcher matcher = pattern.matcher(string); System.out.print(string); System.out.print('\n'); int sum = 0; while( matcher.find() ){ System.out.print(matcher.group(1)); System.out.print(matcher.group(2)); System.out.print('\n'); sum += Integer.parseInt(matcher.group(1)+matcher.group(2)); } System.out.print("\nSum: "+sum); 

Este código imprime lo siguiente:

  5 - 9 + 5 5 -9 5 Sum: 1 

Editar: lo siento si malinterpreté tu pregunta, no estaba claro qué querías hacer. Supuse que querías obtener la sum de los números como un número entero en lugar de una cadena.

Edit2: para obtener los números separados el uno del otro, haga algo como esto en su lugar:

  final String string = " " + 5 + "\n" + "-" + " " + 9+"\n"+"+"+" "+5; //Or get the value from a TextView final Pattern pattern = Pattern.compile("(-?).?(\\d+)"); Matcher matcher = pattern.matcher(string); ArrayList numbers = new ArrayList(); while( matcher.find() ){ numbers.add(Integer.parseInt(matcher.group(1)+matcher.group(2))); }