从android中的用户输入接收字符串消息并解析为int,因此可以存储在数组中并与另一个整数数组进行比较

时间:2013-08-26 09:25:31

标签: android arrays string-parsing

我在Android应用程序中遇到上述任务的问题。我以String的形式接受来自EditText小部件的用户输入。我接受用户的数字,所以我必须将它们解析为整数,以便可以将它们与另一个整数数组进行比较。我有这条线:

String message = editText.getText().toString()

然后尝试将String解析为int我有代码行:

int userNumbers = Integer.parseInt(message).

但是,当我尝试将数组userArray与数组编号进行比较时,我得到的错误是“不兼容的操作数类型字符串和整数。

任何人都可以看到我的问题在哪里或我如何解决它?这是我的代码: 提前致谢。

public class MainActivity extends Activity {
    public final static String EXTRA_MESSAGE = ".com.example.lotterychecker.MESSAGE";
    static boolean bonus = false;
    static boolean jackpot = false;
    static int lottCount = 0;
    Button check;
    Integer [] numbers;



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

        //link to the intended web site and get the lottery numbers while the app is opening 
        try {
            Document doc = Jsoup.connect("http://www.national-lottery.co.uk/player/p/drawHistory.do").userAgent("Mozilla").get();

            Elements elements = doc.getElementsByClass("drawhistory");
            Element table = elements.first();
            Element tbody = table.getElementsByTag("tbody").first();

            Element firstLottoRow = tbody.getElementsByClass("lottorow").first();

            Element dateElement = firstLottoRow.child(0);
            System.out.println(dateElement.text());

            Element gameElement = firstLottoRow.child(1);
            System.out.println(gameElement.text());

            Element noElement = firstLottoRow.child(2);
            System.out.println(noElement.text());

            String [] split = noElement.text().split(" - ");
            // set up an array to store numbers from the latest draw on the lottery web page
            Integer [] numbers = new Integer [split.length];

            int i = 0;
            for (String strNo : split) {
                numbers [i] = Integer.valueOf(strNo);
                i++;
            }

            for (Integer no : numbers) { 
                System.out.println(no);
            }

            Element bonusElement = firstLottoRow.child(3);
            Integer bonusBall = Integer.valueOf(bonusElement.text());
            System.out.println("Bonus ball: " + bonusBall);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

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

    //called when the user clicks the send button
    public void checkNumbers(View view) {
        final int SIZE =6; 
        String [] userArray = new String[SIZE];
        //create an intent to display the numbers
        Intent intent = new Intent(this, DisplayNumbersActivity.class);
        EditText editText = (EditText) findViewById(R.id.enter_numbers);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message );
        startActivity(intent);

        //parse string message to an int for user numbers
        try{
        int userNumbers = Integer.parseInt(message); //is this right?
        }//try
        catch (NumberFormatException e)
        {
            System.out.println("Not a number" + e.getMessage());
        }
        Toast.makeText(MainActivity.this, "Here are your numbers", Toast.LENGTH_LONG).show();

        for (int count =0; count < SIZE; count ++)
        {
            if (check.isPressed())
            {
                userArray[count] = editText.getText().toString(); 
            }
        }//for

        //compare the two arrays of integers
        for (int loop = 0; loop < userArray.length; loop++)
        {
            for (int loopOther = 0; loopOther < numbers.length; loopOther++)
            {
                if (userArray[loop] == numbers[loopOther])  //how do I parse this?
                {
                    lottCount++;
                }else if (userArray[loop] == bonus)
                        {
                            bonus = true;
                        }


            }//for
        }//for main

3 个答案:

答案 0 :(得分:0)

在此处将字符串更改为Int:

for (int loop = 0; loop < userArray.length; loop++)
        {
            for (int loopOther = 0; loopOther < numbers.length; loopOther++)
            {
                if (Integer.valueOf(userArray[loop]) == numbers[loopOther])  //how do I parse this?
                {
                    lottCount++;
                }else if (Integer.valueOf(userArray[loop]) == bonus)
                        {
                            bonus = true;
                        }


        }//for
}//for main

答案 1 :(得分:0)

解析像这样:

for (int loop = 0; loop < userArray.length; loop++)
        {
            for (int loopOther = 0; loopOther < numbers.length; loopOther++)
            {
                if (Integer.parseInt(userArray[loop]) == numbers[loopOther]) 
                {
                    lottCount++;
                }else if (userArray[loop] == bonus)
                        {
                            bonus = true;
                        }


            }
        }

答案 2 :(得分:0)

你有这个

Integer [] numbers; // numbers is an integer array

你有字符串数组

String [] userArray = new String[SIZE]; // userArray is a string array

你比较如下

if (userArray[loop] == numbers[loopOther])

所以你得到错误不兼容的操作数类型字符串和整数

if (Integer.parseInt(userArray[loop]) == numbers[loopOther])

用try catch块包含上述内容

String message = editText.getText().toString();
try{
    int userNumbers = Integer.parseInt(message); 
     //is this right? yes
    }
    catch (NumberFormatException e)
    {
        e.printStacktrace();


    }