java - Searching an array for given number -


write program creates array of 1000 random numbers in range 1 – 5000. ask user value between , 5000, , search array until either find value or determine value not in array. print message indicating whether or not value found, , how many numbers had @ before found value (or determined not there).

for reason keep getting "value not found" when regardless of input. cannot figure out did wrong. advice appreciated. thank in advance.

import java.util.*;  public class array  {      int y = 5000;      int x;      int values[] = new int[1000];      array()      {          random rg = new random();          (int x=0;x<values.length;x++)              values[x]=rg.nextint(y+1);           arrays.sort(values);      }       public int findnumber(int val)      {          int s=0, r = values.length;          int x=0;          while(true)          {              x++;              if (values[(r+s)/2]==val)                  return x;              else if (val > values[(r+s)/2])                  s = (r+s)/2 + 1;              else                  r = (r+s)/2 - 1;              if (s>r)                  return -1;           }       }       public static void main(string[] args)      {          array fn = new array();          scanner kb = new scanner(system.in);          system.out.println("enter whole between 1 , 5000.");          int = kb.nextint();          if (fn.findnumber(a)>0)             system.out.println("found in " + fn.findnumber(a) + " tries.");          else              system.out.println("value not found!");      }  } 

not going debug fully, hints you:

first, not closely related problem still worth looking at: generating rg.nextint(y + 1) going give random 0 5001, believe want rg.nextint(y) + 1 instead.

and have tried code after fixing previous minor issue. worked me. don't see problem. however, suspecting is, because generating 1000 random numbers possible duplicate, if input number search, may not fall 1000 numbers generated. have updated code bit can take on generated, , use 1 of result search input. should work:

    random rg = new random();     (int x=0;x<values.length;x++) {         int r = rg.nextint(y) + 1;         system.out.println("random number: " + r);         values[x]=r;     }      arrays.sort(values); 

(just interest, probability input number in previously-generated 1000 random numbers around 1 - (4999/5000) ^ 1000 around 18%. that's why may "value not found" message


Comments

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -