1

Android アプリケーションで上記のタスクに問題があります。EditTextウィジェットから文字列の形式でユーザー入力を受け入れています。ユーザーから数値を受け入れるので、それらを整数に解析して、別の整数の配列と比較できるようにする必要があります。私は次の行を持っています:

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

次に、文字列を int に解析しようとするコード行があります。

int userNumbers = Integer.parseInt(message).

ただし、配列 userArray を配列番号と比較しようとすると、「互換性のないオペランド タイプ String および Integer.

私の問題がどこにあるか、またはどのように解決できるかを誰かが見ることができますか? これが私のコードです: よろしくお願いします。

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
4

3 に答える 3

0

ここで String を 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
于 2013-08-26T09:32:31.653 に答える
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;
                        }


            }
        }
于 2013-08-26T09:32:58.320 に答える