2

I Want to check what the end number is through a if statement.

for example

if (number ends in 1)

    tNumber.setText("1");

currently my code works but its very large a drawn out and will be time consuming when I build it bigger for larger numbers.

here is my code so far:

{
    timer2 = new Timer(100, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {

            int newNumber = (int) (Math.random() * 10);
            tNumber4.setText("" + newNumber);
            index2++;
            if (index2 >= 10 ) {
                ((Timer) e.getSource()).stop();
                String s = tTo.getText();
                String t = tFrom.getText();
                int x = Integer.parseInt(t);
                int d = Integer.parseInt(s);
                int newNumber2 = (int) (Math.random() * (d + 1 - x) + x);
                if (newNumber2 == 10 || newNumber2 == 20 || newNumber2 == 30
                        || newNumber2 == 40 || newNumber2 == 50 || newNumber2 == 60
                        || newNumber2 == 70 || newNumber2 == 80 || newNumber2 == 90){
                    tNumber4.setText("0");
                }else if (newNumber2 == 11 || newNumber2 == 21 || newNumber2 == 31
                        || newNumber2 == 41 || newNumber2 == 51 || newNumber2 == 61
                        || newNumber2 == 71 || newNumber2 == 81 || newNumber2 == 91){
                    tNumber4.setText("1");
                }else if (newNumber2 == 12 || newNumber2 == 22 || newNumber2 == 32
                        || newNumber2 == 42 || newNumber2 == 52 || newNumber2 == 62
                        || newNumber2 == 72 || newNumber2 == 82 || newNumber2 == 92){
                    tNumber4.setText("2");
                }else if (newNumber2 == 13 || newNumber2 == 23 || newNumber2 == 33
                        || newNumber2 == 43 || newNumber2 == 53 || newNumber2 == 63
                        || newNumber2 == 73 || newNumber2 == 83 || newNumber2 == 93){
                    tNumber4.setText("3");
                }else if (newNumber2 == 14 || newNumber2 == 24 || newNumber2 == 34
                        || newNumber2 == 44 || newNumber2 == 54 || newNumber2 == 64
                        || newNumber2 == 74 || newNumber2 == 84 || newNumber2 == 94){
                    tNumber4.setText("4");
                }else if (newNumber2 == 15 || newNumber2 == 25 || newNumber2 == 35
                        || newNumber2 == 45 || newNumber2 == 55 || newNumber2 == 65
                        || newNumber2 == 75 || newNumber2 == 85 || newNumber2 == 95){
                    tNumber4.setText("5");
                }else if (newNumber2 == 16 || newNumber2 == 26 || newNumber2 == 36
                        || newNumber2 == 46 || newNumber2 == 56 || newNumber2 == 66
                        || newNumber2 == 76 || newNumber2 == 86 || newNumber2 == 96){
                    tNumber4.setText("6" );
                }else if (newNumber2 == 17 || newNumber2 == 27 || newNumber2 == 37
                        || newNumber2 == 47 || newNumber2 == 57 || newNumber2 == 67
                        || newNumber2 == 77 || newNumber2 == 87 || newNumber2 == 97){
                    tNumber4.setText("7" );
                }else if (newNumber2 == 18 || newNumber2 == 28 || newNumber2 == 38
                        || newNumber2 == 48 || newNumber2 == 58 || newNumber2 == 68
                        || newNumber2 == 78 || newNumber2 == 88 || newNumber2 == 98){
                    tNumber4.setText("8" );
                }else if (newNumber2 == 19 || newNumber2 == 29 || newNumber2 == 39
                        || newNumber2 == 49 || newNumber2 == 59 || newNumber2 == 69
                        || newNumber2 == 79 || newNumber2 == 89 || newNumber2 == 99){           
                    tNumber4.setText("9");
                }
            }
        }
    });
    timer2.setInitialDelay(0);

there must be a easier way than this:

if (newNumber2 == 10 || newNumber2 == 20 || newNumber2 == 30
                        || newNumber2 == 40 || newNumber2 == 50 || newNumber2 == 60
                        || newNumber2 == 70 || newNumber2 == 80 || newNumber2 == 90){

I was hoping for something like:

If (newNumber2 == *1){
tNumber4.setText("1")
}

I've had a look through the sight but I'm not sure how to word what im looking for so it makes it difficult.

if anyone can help it would be appreciated.

Pshemo
  • 122,468
  • 25
  • 185
  • 269
Ajay Ward
  • 27
  • 1
  • 7

2 Answers2

5

newNumber2 % 10 returns the last digit of newNumber2. a % b is the remainder of a divided by b - so this is the remainder of newNumber2 divided by 10, which happens to be the last digit.

So you can use, for example:

if((newNumber2 % 10) == 1)

(the extra brackets are a style preference, and aren't required)

user253751
  • 57,427
  • 7
  • 48
  • 90
  • thanks that worked well :) but what if i wanted the middle number of say 2562. lets say I wanna know the 2nd digit is there a easy way to get that as well? – Ajay Ward Mar 22 '15 at 22:40
  • @Ajay ward Keep modding the result, for [example](http://stackoverflow.com/questions/3389264/how-to-get-the-separate-digits-of-an-int-number) – MadProgrammer Mar 22 '15 at 22:43
  • @AjayWard: divide by 10, then get the last digit of that. – user253751 Mar 22 '15 at 23:07
  • how do you mean i'm currently trying to figure out how to get the middle number of 548, if i divide by 10 its 54.8 which will set it to 8 but i want it to be 4 – Ajay Ward Mar 23 '15 at 01:10
  • @AjayWard if you divide two ints, the result is an int, so it would just be 54. (Also, even if it was 54.8, the remainder of dividing 54.8 by 10 is not 8...) – user253751 Mar 23 '15 at 02:26
0

Another way to do it (not as nice as modulus) is to use the .toString() method on the number then substring the number you want

So it would look like this

Integer number = 12345;
String[] places = ArrayUtils.reverse(number.toString().split(""));
// Then you address the numbers by getting the nth index
// So the last number is the 0th index (places[0])
// Don't forget to parse the character back to an integer before doing any calculations on it
String lastNumber = places[0];
MarshallOfSound
  • 2,629
  • 1
  • 20
  • 26