Array out of bounds Exception

this code :
  public void clearAroundTile (int row, int col) {
        //Checks if a tile is visited, has a hint and hintvalue == adjacent flagged tiles
       if(tiles[row][col].isVisited() && tiles[row][col].isHint() && tiles[row][col].getHint()<= getNumFlagsAround(tiles[row][col])){
         if(!tileAt(tiles[row][col], Direction.N).isFlagged()){
             visitTile(tileAt(tiles[row][col], Direction.N));
         if(!tileAt(tiles[row][col], Direction.NE).isFlagged()){
             visitTile(tileAt(tiles[row][col], Direction.NE));
         if(!tileAt(tiles[row][col], Direction.E).isFlagged()){
             visitTile(tileAt(tiles[row][col], Direction.E));visits all the tiles on a board, around a base tile, now the problem is that sometimes, when if checks aorund a tile that is near the edge of a board i get an out of bounds exeption, i know why this happens, but i dont know what type of if statments i should use to correct it, i was thinking.. do if(row-1)>0) then it does not go out of the board, but then how would i do it for the edge of the board that does not relate to zero? any ideas.
thanks

  if(row > 0 && tiles[row][col].isBlank()  )
            if(!tiles[row-1][col].isVisited()){
                clearAroundTile(row-1, col);
                visitTile(tileAt(tiles[row][col], Direction.N));
        if(row -1 > 0 && col + 1 < cols && tiles[row][col].isBlank()  )
            if(!tiles[row-1][col+1].isVisited()){
                clearAroundTile(row-1, col+1);
                visitTile(tileAt(tiles[row][col], Direction.NE));
            }i am using this to automatically clear the tiles that are blank, that is only for 2 directions, i did it for all, and for some reason i keep getting a stack overflow, damn

Similar Messages

  • Array out of bounds exception when outputting array to file

    Could someone please tell me why i'm getting this array out of bounds exception?
    public class Assignment1 {
    public static void main(String[] names)throws IOException {
    BufferedReader keyboard = null;
    String userChoice;
    String inputFile = null;
    String studentData;
    String searchFile = null;
    String searchName;
    String stringIn;
    PrintWriter outputFile;
    FileWriter fWriter = null;
    BufferedReader fReader = null;
    int first;
    int last;
    int mid;
    int midValue;
    int i;
    int number;
    // creates keyboard as a buffered input stream
    keyboard = new BufferedReader(new InputStreamReader(System.in));
    //prompts user to choose 1 or 2 to make a corresponding choice
    System.out.println("Please Enter: ");
    System.out.println("1 to Create a File: ");
    System.out.println("2 to Search a File: ");
    userChoice = keyboard.readLine(); //user enters 1 or 2
    // converts a String into an int value
    number = Integer.parseInt(userChoice);
    fReader = new BufferedReader(new FileReader("studentData.txt"));
    if (number == 1) {          
    System.out.println("Please Enter the File Name to Create: ");
    studentData = keyboard.readLine();
    File file = new File("studentData.txt");
    fWriter = new FileWriter("studentData.txt");
    outputFile = new PrintWriter(fWriter);
    names = new String[200];
    i=0;
    //keep looping till sentinel
    while (studentData != "end" && studentData != null &&
    i < names.length) {
    if (studentData.equals("end")) break; //break and call sort
    System.out.println("Enter a name and press Enter. " +
    "Type 'end' and press Enter when done: ");
    studentData = keyboard.readLine();
    //loop for putting the names into the array
    for(i=0; i<names.length; i++) ;
    outputFile.println(names);
    } [b]outputFile.close();

    package assignment1;
    import java.io.*;
    import java.util.*;
    public class Assignment1 {
        public static void main(String[] names)throws IOException {
           BufferedReader keyboard = null;
           String userChoice;
           String inputFile = null;
           String studentData;
           String searchFile = null;
           String searchName;
           String stringIn;
           PrintWriter outputFile;
           FileWriter fWriter = null;
           BufferedReader fReader = null;
           int first;
           int last;
           int mid;
           int midValue;
           int i;
           int number;
           // creates keyboard as a buffered input stream
           keyboard = new BufferedReader(new InputStreamReader(System.in));
           //prompts user to choose 1 or 2 to make a corresponding choice
           System.out.println("Please Enter: ");
           System.out.println("1 to Create a File: ");
           System.out.println("2 to Search a File: ");
           userChoice = keyboard.readLine();    //user enters 1 or 2
           // converts a String into an int value
           number = Integer.parseInt(userChoice); 
           fReader = new BufferedReader(new FileReader("studentData.txt"));
           if (number == 1) {          
               System.out.println("Please Enter the File Name to Create: ");
               studentData = keyboard.readLine();
               File file = new File("studentData.txt");
               fWriter = new FileWriter("studentData.txt");
               outputFile = new PrintWriter(fWriter);
               names = new String[200];
               i=0;
                //keep looping till sentinel
                while (studentData.equals("end") && studentData != null &&
                       i < names.length) {
                   if (studentData.equals("end")) break;   //break and call sort
                   System.out.println("Enter a name and press Enter. " +
                                       "Type 'end' and press Enter when done: ");
                    studentData = keyboard.readLine();
                    //loop for putting the names into the array
                    for(i=0; i<names.length; i++) ;
                    outputFile.println(names);
    } outputFile.close();
    //call selectionSort() to order the array
         selectionSort(names);
         // Now output to a file.
    fWriter = new FileWriter("studentData.txt");
    outputFile = new PrintWriter(fWriter);
    } else if (number == 2) {
    System.out.println("Please Enter a File Name to search: ");
    searchFile = keyboard.readLine();
    inputFile = ("studentData.txt");
    } if (searchFile == "studentData.txt") {                      
    // Input from a file. See input file streams.
    fReader = new BufferedReader(new FileReader("studentData.txt"));
    System.out.println("Please enter a Name to search for: ");
    searchName = keyboard.readLine();
    //enter binary search code
    first = 0;
    last = 199;
    while (first < last)
    mid = (first + last)/2; // Compute mid point.
    if (searchName.compareTo(names[mid]) < 0) {
    last = mid; // repeat search in bottom half.
    } else if (searchName.compareTo(names[mid]) > 0) {
    first = mid + 1; // Repeat search in top half.
    } else {
    // Found it.
    System.out.println("The Name IS in the file.");
    } // did not find it.
    System.out.println("The Name IS NOT in the file.");
    } else //if userChoice != 1 or 2, re-prompt then start over
    System.out.println("Please Enter 1 or 2 or correctly " +
    "enter an existing file!!");
    // fWriter = new FileWriter("studentdata.txt");
    //outputFile = new PrintWriter(fWriter); //output
    public static void selectionSort(String[] names) {
    //use compareTo!!!!
    int smallIndex;
    int pass, j = 1, n = names.length;
    String temp;
    for (pass = 0; pass < n-1; pass++)
    //Code for Do/While Loop
    do {
    //scan the sublist starting at index pass
    smallIndex = pass;
    //jtraverses sublist names[pass+1] to names[n-1]
    for (j = pass+1; j < n; j++)
    //if smaller string found, smallIndex=that position
    if (names[j].compareTo(names[smallIndex]) < 0)
    smallIndex = j;
    temp = names[pass]; //swap
    names[pass] =names[smallIndex];
    names[smallIndex] = temp;
    } while (j <= names.length);
    //File file = new File("studentData.txt");
    This is the output window:
    init:
    deps-jar:
    compile:
    run:
    Please Enter:
    1 to Create a File:
    2 to Search a File:
    1
    Please Enter the File Name to Create:
    test
    Exception in thread "main" java.lang.NullPointerException
    at assignment1.Assignment1.selectionSort(Assignment1.java:134)
    at assignment1.Assignment1.main(Assignment1.java:73)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 9 seconds)

  • Run TIme Error Message- Array Out of Bounds Exception

    Good evening all,
    I seem to have a run time error with the below segment of code. I've changed the (args[0]) a variety of ways but still get the same message.
    I have a few questions regarding my methodology. First, am I headed down the right path (no spoonfeeding allowed please! I need to grasp and learn this myself). Second, would it be something causing error that is on another line and I'm not seeing it. Third, should I have added the entire class file?
    public static void main(String [] args) throws IOException
       Inventory store = new Inventory ( 15);  // Sets store inventory
       Scanner inFile = new Scanner(new File(args [0])); // _Line 27 in the program_
       PrintWriter outfile = new PrintWriter(args [1]); 
       String temp; .
       double price; 
       int quantity; .
       inFile.next();
       int x = 0; Run time error received:
    java.lang.ArrayIndexOutOfBoundsException: 0
         at StoreBusiness.main(StoreBusiness.java:27)
    Thank you in advance everyone.

    WarriorGeek wrote:
    Thanks Flounder,
    I feel pretty dumb after posting my answer.
    I read the arrays tutorial and understand all that's described there but with what I've learned you have to start your array out at zero like I did. Should I use the variable name that I gave it in lieu of zero?No. The point is that since you didn't provide any arguments when you started your program, there is no arr[0] or arr[anything else]. It doesn't matter if you put an int literal between the brackets or a variable or a method that returns int. You can't access elements that don't exist.
    So instead of java MyClass you need to do java MyClass something The "something" becomes args[0]. If you're using an IDE instead of the command line, there will be a place to configure what arguments you want to pass when you run your program.

  • Array Out of Bounds Exception. Where?

    Hello,
    I am developing an application using Visual Cafe 3.0. The application access a file every minute to read a new line and show data in a MultiList. First the code reads the header of the file to get all options, and then reads a new line avery minute to get results for that options.
    It is something like this:
    Option1, option2, option3,...
    1234, 45, 0, ...
    532, 23, 2, ...
    and so on...
    Code is quite large, and I call a method which is generating the exception (java.lang.ArrayOutofBoundsException). Exception is reached after a random number of calls to that method each time.
    I have some variables declared in the method and some other declared outside of that method because I use them in other part of the code.
    I catch the exception in the method which calls this method (outside following code)
    Here is the method that is failing.
    Please can anyone see where is the code reaching that exception?
    //These are variables used outside the method
    String[] lista_op = new String[100];
    boolean[] lista_bo = new boolean[100];
    String[] lista_va = new String[100];
    int n_opciones = 0;
    int lon = 0;
    char[] resultados;
    //And this is the method
    //Basically I pass a line of text to the method and the length (actually I am not using that variable and some others)
    //Length of all arrays is 100, but number of used items is about 50
         public void results(char[] resultados, int lon)
             int opciones = 0;
             int i = 0;
             int j = 0;
             int n = 0;
             int c = 0;
             int b = 0;
             int z = 0;
             int datoentero = 0;
             int datoanterior = 0;
             char coma = ',';
             String dato = "";
             String vacio = "";
             String datoantes = "";
             String cadena1 = "";
             String cadena2 = "";
             //int[] pos = new int[100];
              multilista.adjustHeadings();
                  //Bucle de busqueda de opciones seleccionadas y
                  //extraccion de datos
                  while (c < n_opciones){
                      if (lista_bo[c] == false){
                          lista_va[b] = lista_op[c];
                          //pos[b] = c;
                          n = c + 3;
                          // Bucle de busqueda de resultados
                          for ( j = 0; i < n; j++){
                              if (resultados[j] == coma){
                                  i++;
                          i = 0;
                          while (resultados[j] != coma){
                              dato = dato + resultados[j];
                              j++;
                          // Fin de bucle de busqueda de resultados
                          cadena1 = lista_va;
              datoentero = Integer.parseInt(dato);
              //textArea1.append(" " + datoentero);
              while (z < Lista_seleccion.getItemCount()){
              cadena2 = Lista_seleccion.getItem(z);
              if (cadena1.equals(cadena2)){
              datoantes = multilista.getCellText(z, 1);
              if (!datoantes.equals(vacio)){
              //textArea1.append("&" + datoantes + "&");
              datoanterior = Integer.parseInt(datoantes);
              datoentero = datoentero + datoanterior;
              multilista.addTextCell(z, 1, Integer.toString(datoentero));
              //grafica(datoentero, z);
              //notificar(datoentero, z);
              z++;
              z = 0;
                   //textArea1.append(" " + dato + " " + c + " " + n);
              b++;
              c++;
              dato = "";
              //Fin de bucle de busqueda de opciones seleccionadas
                   opciones = Lista_seleccion.getItemCount();
                   while (i < opciones){
                   multilista.addTextCell(i, 0, Lista_seleccion.getItem(i));
                   i++;

    The piece of code I showed before works for me when I do
    System.out.println(sw.toString());
    I haven't tried to append it to a text area, but if you say it gives you problem you could try with this:
    // .. keeping the first 3 lines of my previos code
    StringTokenizer st = new StringTokenizer(sw.toString());
    while (st.hasMoreTokens()) {
      textArea.append(st.nextToken());
      textArea.append("\n"); // newline
    }

  • J2EE Deployment - Array Out of Bounds exception

    Hi,
    I have a problem with JDev 10.1.2 (1811). When I try and deploy a standard J2EE application (built using Struts / EJB, nothing particularly fancy) I get the error message:
    Target platform is Standard J2EE.
    java.lang.ArrayIndexOutOfBoundsException: 20086
         at oracle.ide.net.JarIndex.buildIndex(JarIndex.java:410)
         at oracle.ide.net.JarUtil.getJarIndex(JarUtil.java:197)
    (etc)The funny thing is, it was working right up until this morning. It's been in development for a couple of months now and it's been working fine. The only thing I did this morning is add in some input validation (i.e., add in one more class). It all compiles fine. One thing that did happen is, is deploy the WAR file by mistake, and then immediately try and deploy the EAR file from the same deployment profile. If the WAR file was still deploying, I don't know whether that would have messed anything up!
    Deployment works on another project though (in another workspace).
    anyone have any ideas?
    Thanks!
    Phill

    Ok, I feel rather stupid. I had two projects, 'Model' and 'ViewController'. I'd cleaned out the 'deploy' directory on the View Controller, but had forgotten to clean out the deploy directory on the 'Model' project. Clearing it out worked!
    Strange error message though.
    Thanks!

  • Array out of bound - weird

    Hi,
    I have spent quite sometime testing this but the result I am getting is not right and weird.
    I have an array of classes of size 5
    Table myTable = new Table[5];
    I then use a for loop to initialize myTable class as:
    for(int i=1; i<=myTable.length; i++)
    myTable[i] = new myTable(i);
    Is there anything wrong with that? For some reason I am getting array out of bound exception complaining that 5 is out of bound which is not.
    Can anybody tell me what is wrong with this?
    This is very simple and I am not even sure why I am getting this out of bound exception.
    Thanks.

    Abu_Muhammad wrote:
    Can you try to run this?
    int [] intarray = new int[6];
    for(int i=1; i<6; i++)
         System.out.println("value of i is " + i);
         intarray[i] = i;
         System.out.println("value of array is " + intarray);
    This doesnt give an exception nor does the index start from 0. Then why doesnt the other loop work or why this works?
    i < 6 means the loop will continue executing as long as i is less than 6. Once i reaches 5, the loop will break. If you used intarray.length there wouldn't be an ArrayIndexOutOfBounds exception, but nothing would happen to index 0, as you've missed it.
    Edited by: xcd on Mar 23, 2010 3:11 PM

  • Deck Class, array out of bounds

    I keep getting an "array out of bounds" exception when I run the program. I tried to make the array 666666 instead of just 52 and i still get that error. HELP!! ,
    IM ONLY HAVING PROBLEMS WITH THE SHUFFLE METHOD
    By the way, this time i REALLY cleaned up the class and It compliles correctly so it would help if you guys that posted last time would take a look at it again.
    (and I know that the name of the class shoudl be card or something but MY teacher wanted it to be deck)
    Any help greatly appreciated and if you see any other errors in logic or code please tell me!
    this is the testing class im using
    public class DeckTester{
         public static void main ( String[] args ){
              Deck[] decko = Deck.makeDeck();
              Deck.printDeck( decko );
              System.out.println(" ");
              Deck.printFirstFive(decko);
              Deck[] newDeck = new Deck[66666]; // tried to make this big because i keep getting array out of bounds error
              newDeck = Deck.shuffleDeck( decko );
              Deck.printDeck ( newDeck );
    }and this is the deck class
    import java.lang.Math;
    class Deck
         int suit, rank;
    /////////////////////////////////////////// CONSTRUCTORS
      public Deck () {
        this.suit = 0;  this.rank = 0;
      public Deck (int suit, int rank) {
        this.suit = suit;  this.rank = rank;
    /////////////////////////////////////////// PRINT CARD
      public static void printCard( Deck c ){
           String[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
         String[] ranks = { "narf", "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };
           System.out.println (ranks[c.rank] + " of " + suits[c.suit]);
      }//end method
    ////////////////////////////////////////// CREAT NEW DECK
      public static Deck[] makeDeck(){
           int index = 0;
        Deck[] deck = new Deck [52];
        for (int suit = 0; suit <= 3; suit++) {
               for (int rank = 1; rank <= 13; rank++) {
                     deck[index] = new Deck (suit, rank);
                 index++;
      return deck;
      }//end method
    /////////////////////////////////////////// PRINT DECK
      public static void printDeck (Deck[] deck) {
        for (int i=0; i<deck.length; i++) {
          printCard (deck);
    /////////////////////////////////////////// PRINT FIRST 5
    public static void printFirstFive (Deck[] deck){
         int x = -1;
         while (x != 4 ){
              x += 1;
              printCard(deck[x]);
    /////////////////////////////////////////// SHUFFLE
    // this is supposed to simulate real riffle shuffling
    public static Deck[] shuffleDeck (Deck[] deck){
         //creating and initializing variables
         int cut = (int)(22+ Math.random() * 8); //cut the deck into 2 parts
         int side1 = cut; //how many cards in first side
         int side2 = 52 - cut; //how many in second
         int numberCards = 0, neg_to_pos = -1, k = 0; //how many cards go down from each side
         int x = -1, y = side1, z = 0, d = 0; //begining point of first and second halves
         Deck[] shuffledDeck = new Deck [66666]; //the shuffled deck goes into this one
    /* ^^^^^^^^^^^^^^^ INITIALIZING VARIABLES ^^^^^^^^^^^^^^^^^^ */
         while ( k < 100 ){
              k += 1; // i used 100 for now because you can
              neg_to_pos *= (-1); //switches which hand half of the deck you take cards form
              numberCards = numberCard();     
         if ( neg_to_pos == 1) { // this is the first half
              if ( x < (side1 + 1) ){ // checks to see if first half is empty
                   //for( x = x; x <= numberCards /*go untill variable*/; ++x ) {
                        z = (-1); // checks if you put down all the "numberCards"
                        while ( x <= numberCards ) {     
                             z += 1;
                             x += 1; // x is which spot in the deck the cards go
                             shuffledDeck[x] = deck[x];     
                        }//end for     
                   }//end if
         }//end if
         if ( neg_to_pos == (-1) ) { // this is the second half
              if ( x <= 52 ){
                   //for( y = y; y < numberCards; y++ ) {
                   d = (-1);
                   while ( d <= numberCards ) {
                        d += 1;
                        y += 1;     
                        shuffledDeck[y] = deck[y];
                   }//end for
              }//end if
         }//end if (else)
    }// end while
    return shuffledDeck;
    }//end shuffle method
    /////////////////////////////////////////// NUMBER CARDS
         private static int numberCard() {
              /*numberCards is how many cards you take put down
              from each hand. In shuffling it is not always the
              same number, so this picks waht that number is */
              int percent = (int)(Math.random() * 99);
              int numberCards = 0;
              if (percent < 20) {
                   numberCards = 1;}
              else if( percent >= 20 && percent <= 49 ){
                   numberCards = 2;}
         else if( percent >= 50 && percent <=69 ){
              numberCards = 3;}
         else if( percent >= 70 && percent <=79 ){
              numberCards = 4;}
         else if( percent >= 80 && percent <=84 ){
              numberCards = 5;}
         else if( percent >= 85 && percent <=89 ){
              numberCards = 6;}
         else if( percent >= 90 && percent <=92 ){
              numberCards = 7;}
         else if( percent >= 93 && percent <=95 ){
              numberCards = 8;}
         else if( percent >= 96 && percent <=97 ){
              numberCards = 9;}
         else{ numberCards = 10; }
         return numberCards;
         }//end numberCards METHOD
    /////////////////////////////////////////// END CLASS
    }//end class      
    /////////////////////////////////////////// END     

    Wooo, you;ve made this far to complicated. Lets start with a class called Card, let just imagine this exists, we won;t go into any more detail. Now lets look at a class called Deck, which has a collection of cards.
    class Deck {
      private java.util.Vector cards = new java.util.Vector();
      Deck() {
          for (int i = 0; i < 52, i++) {
           cards.add(new Card(i));
      } //this method adds 52 cards to the vector
      public Card getCardAt(i) {
         return (Card) cards.removeElementAt(i); //can't remember exact method
      public Card getRandomCard() {
         int index = Random.nextInt() * 52;
          return getCardAt(index);
      public int getSize() {
         return cards.size();
    }Okay, this method has 52 cards and you can either get one at the specificed index or get a random card. Because the cards are removed when they are returned you will never get the same card twice. There is no point in shuffling them if you just return a random card ;)
    Okay, now all you need when using the deck class is to create a new instance for each new game:
    void deal(Player[] players) {
      Deck d = new Deck();
       while (d.getSize() > players.length) {
           for (int i = 0; i < players.length; i++) {
                     players.dealCard(d.getRandomCard()());
    Always remember the KISS process:
    Keep It Simple, Stupid :)

  • Java Index Out Of Bounds Exception error

    In the Query Designer when I choose access type for Result value as Master data, and execute, I get the following java Index Out Of Bounds Exception error:
    com.sap.ip.bi.webapplications.runtime.controller.MessageException: Error while generating HTML
         at com.sap.ip.bi.webapplications.runtime.impl.Page.processRequest(Page.java:2371)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.doServerRedirect(Page.java:2642)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.doProcessRequest(Page.java:2818)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.processRequest(Page.java:2293)
         at com.sap.ip.bi.webapplications.runtime.controller.impl.Controller.doProcessRequest(Controller.java:841)
         at com.sap.ip.bi.webapplications.runtime.controller.impl.Controller.processRequest(Controller.java:775)
         at com.sap.ip.bi.webapplications.runtime.jsp.portal.services.BIRuntimeService.handleRequest(BIRuntimeService.java:412)
         at com.sap.ip.bi.webapplications.runtime.jsp.portal.components.LauncherComponent.doContent(LauncherComponent.java:21)
         at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)
         at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)
         at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)
         at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)
         at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)
         at com.sapportals.portal.prt.component.PortalComponentResponse.include(PortalComponentResponse.java:215)
         at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:645)
         at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)
         at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)
         at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)
         at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:753)
         at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)
         at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:522)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:405)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.ip.bi.base.exception.BIBaseRuntimeException: Error while generating HTML
         at com.sap.ip.bi.webapplications.ui.items.UiItem.render(UiItem.java:380)
         at com.sap.ip.bi.webapplications.runtime.rendering.impl.ContainerNode.render(ContainerNode.java:62)
         at com.sap.ip.bi.webapplications.runtime.rendering.impl.PageAssemblerRenderingRoot.processRendering(PageAssemblerRenderingRoot.java:50)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.processRenderingRootNode(Page.java:3188)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.processRendering(Page.java:2923)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.doProcessRequest(Page.java:2877)
         at com.sap.ip.bi.webapplications.runtime.impl.Page.processRequest(Page.java:2293)
         ... 39 more
    Caused by: java.lang.IndexOutOfBoundsException: fromIndex = -7
         at java.util.SubList.<init>(AbstractList.java:702)
         at java.util.RandomAccessSubList.<init>(AbstractList.java:860)
         at java.util.AbstractList.subList(AbstractList.java:569)
         at com.sap.ip.bi.bics.dataaccess.base.impl.ModifiableList.remove(ModifiableList.java:630)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.RsDataCells.removeRows(RsDataCells.java:480)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.RsAxis.removeTuples(RsAxis.java:550)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.RsAxis.applyResultVisibility(RsAxis.java:1312)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.RsAxis.applyResultVisibility(RsAxis.java:1326)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.RsAxis.applyResultVisibility(RsAxis.java:1326)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.RsAxis.applyResultVisibility(RsAxis.java:1326)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.RsAxis.applyResultVisibility(RsAxis.java:1272)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.RsAxis.applyResultVisibility(RsAxis.java:1170)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.ResultSet.applyPostProcessing(ResultSet.java:282)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.resultset.ResultSet.refreshData(ResultSet.java:262)
         at com.sap.ip.bi.bics.dataaccess.consumer.impl.queryview.QueryView.getResultSet(QueryView.java:267)
         at com.sap.ip.bi.webapplications.ui.items.analysis.control.AcPivotTableInteractive.checkResultSetState(AcPivotTableInteractive.java:368)
         at com.sap.ip.bi.webapplications.ui.items.analysis.control.AcPivotTableExport.validateDataset(AcPivotTableExport.java:249)
         at com.sap.ip.bi.webapplications.ui.items.analysis.control.AcPivotTableInteractive.buildUrTree(AcPivotTableInteractive.java:282)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:33)
         at com.sap.ip.bi.webapplications.ui.framework.base.composites.UiRootContainer.iterateOverChildren(UiRootContainer.java:40)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.advancedcontrols.bridge.AcItemBridge.iterateOverChildren(AcItemBridge.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.FlowLayoutItem.iterateOverChildren(FlowLayoutItem.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.FlowLayout.iterateOverChildren(FlowLayout.java:69)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.framework.base.composites.UiRootContainer.iterateOverChildren(UiRootContainer.java:40)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.advancedcontrols.bridge.AcItemBridge.iterateOverChildren(AcItemBridge.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.MatrixLayoutCell.iterateOverChildren(MatrixLayoutCell.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.MatrixLayoutRow.iterateOverChildren(MatrixLayoutRow.java:56)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.MatrixLayout.iterateOverChildren(MatrixLayout.java:69)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.container.matrixlayout.control.AcMatrixControlGrid.iterateOverChildren(AcMatrixControlGrid.java:40)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.framework.base.composites.UiRootContainer.iterateOverChildren(UiRootContainer.java:40)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.advancedcontrols.bridge.AcItemBridge.iterateOverChildren(AcItemBridge.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.Group.iterateOverChildren(Group.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.container.group.control.AcGroupControl.iterateOverChildren(AcGroupControl.java:259)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.framework.base.composites.UiRootContainer.iterateOverChildren(UiRootContainer.java:40)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.advancedcontrols.bridge.AcItemBridge.iterateOverChildren(AcItemBridge.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.FlowLayoutItem.iterateOverChildren(FlowLayoutItem.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.FlowLayout.iterateOverChildren(FlowLayout.java:69)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.framework.base.composites.UiRootContainer.iterateOverChildren(UiRootContainer.java:40)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.advancedcontrols.bridge.AcItemBridge.iterateOverChildren(AcItemBridge.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.unifiedrendering.controls.Group.iterateOverChildren(Group.java:63)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.container.group.control.AcGroupControl.iterateOverChildren(AcGroupControl.java:259)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.framework.base.composites.UiRootContainer.iterateOverChildren(UiRootContainer.java:40)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.process(CompositeBuildUrTreeTrigger.java:36)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.CompositeBuildUrTreeTrigger.start(CompositeBuildUrTreeTrigger.java:59)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.ExtendedRenderManager.triggerComposites(ExtendedRenderManager.java:69)
         at com.sap.ip.bi.webapplications.ui.framework.base.impl.BICompositeManager.renderRoot(BICompositeManager.java:79)
         at com.sap.ip.bi.webapplications.ui.items.UiItem.render(UiItem.java:376)
    Any help in solving this error is highly appreciated. Points will be given
    Best Regards,
    Vidyut K Samanta

    Hi.
    Go to line 9 of your code.
    You are trying to use an array there.
    Suppose you have an array x[4] - this array has 4 elements indexed 0..3.
    you are trying to access an element with an index higher than 3.
    Nimo.

  • Array Out of Bounds, How?

    Ok so my problem is driving me crazy, I have an array, everytime I click the button it adds another set of objects to the new cells in an array. For Example
    int x = 0;
    Array[x] = some stuff;
    btnClicked;
    x += 1;
    Array[x] = some new stuff;My problem is that it gives me an index out of bounds exception, how I can't understand,my indexes never go below 0, and never go above the size of the array, any help appreciated.

    I'll try my best, it is a rather large file, I post the main stuff
    //Global
    String[] EmuQuestion = new String[100];
    int x = 0;
    // Within the method I start the array
    String question = bw.readLine();
    String[] qsplit = question.split("\\. ");
    EmuQuestion[x] = qsplit[1];
    // Method called from a button click, exception occurs
    x += 1;
    String question = bw.readLine();
    String[] qsplit = question.split("\\. "); 
    EmuQuestion[x] = qsplit[1];

  • Java Array Out Of Bounds Problem

    In order to conduct an experiment in java array sorting algorithm efficiency, i am attempting to create and populate an empty array of 1000 elements with random, unique integers for sorting. I've been able to generate and populate an array with random integers but the problem is - for whatever size array I create, it only allows the range of numbers to populate it to be the size of the array, for instance, an array of size 3000 allows only the integer range of 0-3000 to populate it with or I get an out of bounds exception during runtime. How can you specify an integer range of say 0-5000 for an array of size < 5000? Any help is appreciated.

    Another approach is to fill the array with an
    arithmetic sequence, maybe plus some random noise:
        array[i] = i * k + rand(k);or some such, so they are unique,
    and then permute the array (put the elements
    s in random order)
        for (i : array.length) {
    transpose(array, array[rand(i..length)]); }
    Along those lines, java.util.Collections.shuffle can be used to randomly shuffle a List (such as an ArrayList).  Create an ArrayList with numbers in whatever range is needed.  Then call java.util.Collections.shuffle(myArrayList). [It is static in Collections--you don't need to [and can't] create a Collections object.]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Array out of bounds issue,

    Hi guys, I�m having trouble trying to fix a problem with the array index Out of bounds exception
    I understand that I need to create some kind of if statement. I would ordinarily be able to do this if I only had one array, but I have two, and I am not sure where or how to insert my if statements to say, that if Index2 reaches 15 say �Full� and if Index 1 reaches 10 say �Full�,
    Can anyone provide any guidance on this, any help will be much appreciated
    Bellow is my code if it makes things clearer for anyone
    Kyle
    import java.util.Scanner;
    * Write a description of class SquareCube here.
    * @author (your name)
    * @version (a version number or a date)
    import java.util.Scanner;
    public class BookingTickets {
    public static void main (String [] args)
        Scanner myScanner = new Scanner(System.in);
        int Count;
        double Price = 0.00;
        String SeatArea;
        int[] SeatNumberEconomy;
        int[] SeatNumberGallery;
        int Index1 = 0;
        int Index2 = 10;
        String YesNo;
        SeatNumberEconomy = new int[10];
        for(int i=0;i<10; ++i)
            SeatNumberEconomy[i] = i+1;
        SeatNumberGallery= new int[15];  
        for(int a=10;a<15; ++a)   
            SeatNumberGallery[a] = a+1;
        for(Count = 1; Count <=15; Count++)
            System.out.println ("Please select where you would prefer to sit");
            System.out.println ("Input (E) for Economy and (G) for Gallery;- ");
            SeatArea = myScanner.next();
            if (SeatArea.equalsIgnoreCase("E"))
                SeatArea = ("Economy");
                Price = 10.00;
                System.out.println (" ");
                System.out.println ("You have Selected...");
                System.out.println (SeatArea + " Priced at �" + Price + " per ticket");
                System.out.println ("Your Seat Number is: " + SeatNumberEconomy[Index1]);
                ++Index1;
                System.out.println (" ");
            if (SeatArea.equalsIgnoreCase("G"))
                SeatArea = ("Gallery");
                Price = 20.00;
                System.out.println (" ");
                System.out.println ("You have Selected...");
                System.out.println (SeatArea + " Priced at �" + Price + " per ticket");
                System.out.println ("Your Seat Number is: " + SeatNumberGallery[Index2]);
                ++Index2;
                System.out.println (" ");
        System.out.println (" ");
        System.out.println("all seats have been booked");
        System.out.println("be sure to try again tomorrw");
    }

    import java.util.Scanner;
    * Write a description of class SquareCube here.
    * @author (your name)
    * @version (a version number or a date)
    public class BookingTickets {
    public static void main (String [] args)
        Scanner myScanner = new Scanner(System.in);
    //    int Count;
        double Price = 0.00;
        String SeatArea;
        int[] SeatNumberEconomy;
        int[] SeatNumberGallery;
        int Index1 = 0;
        int Index2 = 0;
    //    String YesNo;
        SeatNumberEconomy = new int[10];
        SeatNumberGallery = new int[15];
        for(int i=0;i<10; ++i)
           SeatNumberEconomy[i] = i+1;
        for(int a=0;a<15; ++a)   
            SeatNumberGallery[a] = a+1;
             while (Index1 != 10 && Index2 != 15)
            System.out.println ("Please select where you would prefer to sit");
            System.out.println ("Input (E) for Economy and (G) for Gallery;- ");
            SeatArea = myScanner.next();
            if (SeatArea.equalsIgnoreCase("E"))
                SeatArea = ("Economy");
                Price = 10.00;
                System.out.println (" ");
                System.out.println ("You have Selected...");
                System.out.println (SeatArea + " Priced at �" + Price + " per ticket");
                System.out.println ("Your Seat Number is: " + SeatNumberEconomy[Index1]);
                ++Index1;
                System.out.println (" ");       
            if (SeatArea.equalsIgnoreCase("G"))
                SeatArea = ("Gallery");
                Price = 20.00;
                System.out.println (" ");
                System.out.println ("You have Selected...");
                System.out.println (SeatArea + " Priced at �" + Price + " per ticket");
                System.out.println ("Your Seat Number is: " + SeatNumberGallery[Index2]);
                ++Index2;
                System.out.println (" ");
        System.out.println (" ");
        System.out.println("all seats have been booked");
        System.out.println("be sure to try again tomorrw");

  • Out of bounds exception although increasing heap space

    Hello,
    In my java application, there is a gif file with the size 6000 X 3500 . This file is 536 KB and i use this file with scroll bar.
    My question is that although I increased heap space to 512, it still keep going to give "out of bounds" exception when i try to set new dimention to the frame bigger than (800, 1000).
    How can I use my gif file with bigger frame?

    There is no such exception.
    Are you talking about ArrayIndexOutOfBoundsException?
    OutOfMemoryError?
    Something else?

  • Please iam getting index out of bound exception can any body solve my probl

    Dear all
    iam doing aproject in swing in that one class iam using the below method. Iam getting index out of bound exception. Actually iam trying to access the more that 50mb file at that time its giving out of memory exception after that iam using this method now its giving index out of bound exception, when it is going second time in the while loop. can any body solve my problem. Please give me the solution . Ill be very thankful to you.
    public Vector getFileContent(File fileObj){
    FileInputStream fis = null;
    DataInputStream dis = null;
    Vector v = new Vector();
    byte[] data = null;
    int pos = 0;
    int chunk = 10000;
    int sizePos = 0;
    try{
    fis = new FileInputStream(fileObj);
    int size = (int)fileObj.length();
    dis = new DataInputStream(fis);
    int k = 1;
    if(size <10000){
    data = new byte[size];
    //v.addElement(dis.readFully(data));
    dis.readFully(data);
    v.addElement(data);
    else {
    while(pos < size){
    sizePos = size - chunk*k;
    if(sizePos > 10000){
    chunk = 10000;
    else{
    chunk = sizePos;
    data = new byte[chunk];
    dis.read(data, pos, chunk);
    v.addElement(data);
    System.gc();
    pos = pos + chunk + 1;
    regards,
    surya

    pos = pos + chunk + 1;Why the +1??

  • How to prevent arrayindex out of bounds exception while unziping the files

    hi all ,
    i am new to java.Can any body help me to solve my problem.here is my problem.
    here i am trying to unzip a ziped file. but i am getting arrayindex out of bounds exception at line no 12 (args[0]), my quesion is to how to prevent arrayindex out of bounds exception ? please give me clear explanation.
    public class UnZip2 {
    static final int BUFFER = 2048;
    public static void main (String args[]) {
    try {
    BufferedOutputStream dest = null;
    BufferedInputStream is = null;
    ZipEntry entry;
    ZipFile zipfile = new ZipFile(args[0]);
    Enumeration e = zipfile.entries();
    while(e.hasMoreElements()) {
    entry = (ZipEntry) e.nextElement();
    System.out.println("Extracting: " +entry);
    is = new BufferedInputStream
    (zipfile.getInputStream(entry));
    int count;
    byte data[] = new byte[BUFFER];
    FileOutputStream fos = new
    FileOutputStream(entry.getName());
    dest = new
    BufferedOutputStream(fos, BUFFER);
    while ((count = is.read(data, 0, BUFFER))
    != -1) {
    dest.write(data, 0, count);
    dest.flush();
    dest.close();
    is.close();
    } catch(Exception e) {
    e.printStackTrace();
    }

    how you run it?
    java Unzip2?
    args[0] refer to first parameter in run command, so u should run it by giving a parameter. eg:
    java Unzip2 someFile.zip

  • Array Index out of bound exception

    public Name[] getName() {
              Name[] retVal = new Name[0];
              retVal[0] = this.getNameInstance();
              return retVal;
         public void setName(Name[] theName) {
              theName[0]=this.getNameInstance();
         private Name myNameInstance = new Name();
         public void setNameInstance(Name theNameInstance) {
              if(isValidName(theNameInstance)){
              myNameInstance = theNameInstance;
         public Name getNameInstance() {
              return myNameInstance;
         }I am getting an array Index out of bound eception in the method setName, Can any one tell me where I am doing wrong?

    The array passed in must be empty. I suggest using the debugger for problems like these. If you don't know how to use the debugger, here's a start:
    (Assuming you have a debugger, any IDE you'd be using will)
    1. Set a breakpoint on or before your line of question. In this case, place it on the line of code in your setName() method. Set a breakpoint by either right clicking on that line and selecting "Add breakpoint," or simply click on the far left side of the editor window, right next to the line number. Either way, a little dot will appear to mark the breakpoint.
    2. Execute your code in Debug mode rather than release mode. This might mean clicking on the little bug-looking icon "Debug" rather than "Run."
    3. Your code will execute and you'll enter the debug perspective when that breakpoint is reached. There, in the variables window, you'll see your array and any information about it, particularly its size and contents.

Maybe you are looking for

  • How to get a list of file paths for all files used in a project

    I have a project in Premiere Pro CC which has a large number of bins.  A sequence in one of these bins uses files from other bins.  I am trying to find the locations of all each of the files used  in the project. 1)  Obviously I can select each clip

  • Window doesn't fit screen

    Since installing Mavericks, I find some windows open just a bit larger than the actual screen. Just enough so that I can neither reach the three dots in the upper left hand corner nor the bottom right hand corner to resize it. In fact, I am totally s

  • File2File scenario using BPM

    Hi friends, I am getting the following error while creating in the first receiver determination between file 2 IP 1.)under configuration overview, the communication component is correctly showing but under this it is showing wrongly the outbound mess

  • How to refresh Repository ?

    Hello, how can I refresh the repository after creating a new database. I'm using ORACLE 9.2010. Thanks for any help in advance. Peter

  • Some artists won't display on my Classic

    After syncing my 80 gig iPod Classic with my iTunes, I can access the song by song name, album, genre, playlist, etc. However, I can't reach the song by artist. This has only happened with a few artists, and I have tried to rename the artist on iTune