4

I am trying to compare a user input that i have as int with a Random r. But i am getting type mismatch errors. I tried parsing the Random as int by using Integer.parseint(r) but even that gives me a type mismatch error. I am doing all this in the game() function.

package com.myapplication;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import java.util.Random;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }



    public void game(View view) {
        int a = 73;
        TextView textv = (TextView) findViewById(R.id.textView2);
        EditText editText = (EditText) findViewById(R.id.editText);
        String eText=editText.getText().toString();

        int guess = Integer.parseInt(eText);

        if (guess == a){

            textv.setText("You Won");
            Random r = new Random();
            a = Integer.parseInt(r);

        }
        else if(guess < a){

            textv.setText("Higher");
        }

        else if (guess > a){

            textv.setText("Lower");
        }


    }
}
nabeel
  • 425
  • 1
  • 9
  • 22

4 Answers4

7

for make random int you can use this

Random r = new Random();

int a = r.nextInt((100-10)+1)+10;

this generate a random int between 10 to 100

In general use nextInt like this for make random between two number

r.nextInt((max-min)+1)+min;

I think I know what you want

full code,first generate a random int a and when click in button call game,in game check if the user number equal to a then show message and generate new number else ...

public class MainActivity extends ActionBarActivity {

    EditText editText;

    Random r = new Random();
    int a;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send);

        /*--------Generate First Random int--------*/
        a = r.nextInt((100-10)+1)+10;
        Log.i("LOG", "Random --> " + a);
        /*-----------------------------------------*/

        editText =(EditText) findViewById(R.id.editText);

        Button button=(Button) findViewById(R.id.button);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                game(arg0);
            }
        });
    }

    public void game(View view) {

        TextView textv = (TextView) findViewById(R.id.textView2);
        String eText=editText.getText().toString();

        int guess = Integer.parseInt(eText);

        if (guess == a){

            textv.setText("You Won");
            a = r.nextInt((100-10)+1)+10;
        }
        else if(guess < a){

            textv.setText("Higher");
        }

        else if (guess > a){

            textv.setText("Lower");
        }
    }
}

» for more info about Random in Android go to this link

http://developer.android.com/reference/java/util/Random.html

sadegh
  • 1,720
  • 1
  • 16
  • 30
  • 1
    @DerGol...lum tanks,I put the wrong one instead of 10 - `r.nextInt(10);` make between **0 to 10** so `r.nextInt((100-10)+1);` make between **0 to 90** And `r.nextInt((100-10)+1)+10;` make between **10 to 100** – sadegh Jul 26 '15 at 10:47
  • Oh, yes, sorry. I was confusing with C# Random, which gives you `0, ..., n-1` – Phantômaxx Jul 26 '15 at 11:03
2

With this code:

Random r = new Random();
a = Integer.parseInt(r);

you are creating an object of class type java.util.Random, which is a random number generator (not a random number as you might think). Then you are trying to pass it to java.lang.Integer.parseInt(String) method, which can only accept a String. Your attempt obviously fails.

You probably want to call java.util.Random.nextInt() method to get a random integer instead:

int i = new Random().nextInt();

No need to parse it anyway.

(live example)

Ivan Aksamentov - Drop
  • 12,860
  • 3
  • 34
  • 61
0

You should use a = r.nextInt().

See Java Documentation.

Genhis
  • 1,484
  • 3
  • 27
  • 29
0

please see this post for reference

public static int randInt(int min, int max) {

Random rand = new Random();
return rand.nextInt((max - min) + 1) + min; 
}
Community
  • 1
  • 1
SimpleJack
  • 151
  • 1
  • 12