Reputation: 21
I have problem here,my java code is
int num = Integer.parseInt(mark.getText().toString());
And my xml code is
android. InputType="number"
But i am still getting error saying that "invalid int ="""
Can anyone help me..i really really need help right now.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adding_remove);
parentLinearLayout = (LinearLayout) findViewById(R.id.parent_linear_layout);
final EditText mark = (EditText)findViewById(R.id.etMark);
EditText j = (EditText)findViewById(R.id.etJam);
TextView status = (TextView)findViewById(R.id.tVGred);
TextView pn = (TextView)findViewById(R.id.tvPnm);
double pointer;
String grade;
int num = Integer.parseInt(mark.getText().toString());
if (num >= 90 && num <= 100) {
grade = "A+";
pointer = 4.00;
status.setText(grade);
}
else if (num >= 80 && num <= 89) {
grade = "A";
pointer = 4.00;
status.setText(grade);
}
else if (num >= 75 && num <= 79) {
grade = "A-";
pointer = 3.67;
status.setText(grade);
}
else if (num >= 70 && num <= 74) {
grade = "B+";
pointer = 3.33;
status.setText(grade);
}
else if (num >= 65 && num <= 69) {
grade = "B";
pointer = 3.00;
status.setText(grade);
}
else if (num >= 60 && num <= 64) {
grade = "B-";
pointer = 2.67;
status.setText(grade);
}
else if (num >= 55 && num <= 59) {
grade = "C+";
pointer = 2.33;
status.setText(grade);
}
else if (num >= 50 && num <= 54) {
grade = "C";
pointer = 2.00;
status.setText(grade);
}
else if (num >= 47 && num <= 49) {
grade = "C-";
pointer = 1.67;
status.setText(grade);
}
else if (num >= 44 && num <= 46) {
grade = "D+";
pointer = 1.33;
status.setText(grade);
}
else if (num >= 40 && num <= 43) {
grade = "D";
pointer = 1.00;
status.setText(grade);
}
else
{
grade = "F";
pointer = 0.00;
status.setText(grade);
}
}
Upvotes: 0
Views: 15430
Reputation: 138
try this
int num = toInteger(mark.getText().toString());
public static Integer toInteger(Object value) {
if (value instanceof Integer) {
return (Integer) value;
} else if (value instanceof Number) {
return ((Number) value).intValue();
} else if (value instanceof String) {
try {
return (int) Double.parseDouble((String) value);
} catch (NumberFormatException ignored) {
}
}
return null;
}
Upvotes: 0
Reputation: 138
use this
<EditText
android:id="@+id/login_text_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:digits="0123456789"
android:maxLength="10" />
Upvotes: 0
Reputation: 1378
Problem is with
int num = Integer.parseInt(mark.getText().toString());
Your code is try to get text From EDITTEXT But is contains "" when ActiVity Created. So Activity Throw error For invalid Int
so you need to add any Button So Activity Get String When Button click Trigger. But If You dont want to use any Button Use Enter Key As Trigger to Change Focus and get String Fri EditText like this.
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
public class Main2Activity extends AppCompatActivity {
int num =0;
EditText mark;
EditText j;
TextView status,pn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
mark = (EditText)findViewById(R.id.edt);
j = (EditText)findViewById(R.id.jmark);
status = (TextView)findViewById(R.id.txt);
pn = (TextView)findViewById(R.id.txt1);
final double[] pointer = new double[1];
final String[] grade = new String[1];
mark.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(KeyEvent.KEYCODE_ENTER == keyCode) {
j.requestFocus();
if(mark.getText().toString()!="")
num= Integer.parseInt(mark.getText().toString());
if (num >= 90 && num <= 100) {
grade[0] = "A+";
pointer[0] = 4.00;
status.setText(grade[0]);
}
else if (num >= 80 && num <= 89) {
grade[0] = "A";
pointer[0] = 4.00;
status.setText(grade[0]);
}
else if (num >= 75 && num <= 79) {
grade[0] = "A-";
pointer[0] = 3.67;
status.setText(grade[0]);
}
else if (num >= 70 && num <= 74) {
grade[0] = "B+";
pointer[0] = 3.33;
status.setText(grade[0]);
}
else if (num >= 65 && num <= 69) {
grade[0] = "B";
pointer[0] = 3.00;
status.setText(grade[0]);
}
else if (num >= 60 && num <= 64) {
grade[0] = "B-";
pointer[0] = 2.67;
status.setText(grade[0]);
}
else if (num >= 55 && num <= 59) {
grade[0] = "C+";
pointer[0] = 2.33;
status.setText(grade[0]);
}
else if (num >= 50 && num <= 54) {
grade[0] = "C";
pointer[0] = 2.00;
status.setText(grade[0]);
}
else if (num >= 47 && num <= 49) {
grade[0] = "C-";
pointer[0] = 1.67;
status.setText(grade[0]);
}
else if (num >= 44 && num <= 46) {
grade[0] = "D+";
pointer[0] = 1.33;
status.setText(grade[0]);
}
else if (num >= 40 && num <= 43) {
grade[0] = "D";
pointer[0] = 1.00;
status.setText(grade[0]);
}
else
{
grade[0] = "F";
pointer[0] = 0.00;
status.setText(grade[0]);
}
return true;
}
else
{
return false;
}
}
});
}
}
Make Sure you added android:singleLine="true"
i your xml file
Upvotes: 1