Skip to Main Content

java.lang.StringIndexOutOfBoundsException: String index out of range: -9

843789Dec 16 2009 — edited Dec 16 2009
working on a project and came across this exception during runtime.

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -9
at java.lang.String.substring(Unknown Source)
at SomethingIsWrong.main(SomethingIsWrong.java:17)

I'm a bit confused. could anyone shed some light on what im doing wrong? i know it deals with my testingStrings method.
import java.io.*;
import java.util.*;

public class SomethingIsWrong 
{
	static Scanner console = new Scanner(System.in);
	
	public static void main(String[] args)
	{
		
		Rectangle method = new Rectangle();
		
		method.width = 40;
		method.height = 50;

		System.out.println("myRect's area is " + method.area());
		System.out.println("Was it a car or a cat i saw?".substring(-9, 12)); // error here
		
		testingStrings();
		grades();
	}
	
	public static void cat(File file)
							throws FileNotFoundException
	{
		String line = null;
		
		Scanner inFile = new Scanner(new FileReader("myFile.txt"));
		
		try 
		{
			while ((line = inFile.nextLine())!= null) 
			{
			
				System.out.println(line);
			}
			return;
			
		}	finally 
			{
				if (inFile != null)
				{
					inFile.close();
				}
			}
	}	
	
	public static void grades()
	{
		char grade;
		int testScore = console.next().charAt(0);
		
		if (testScore < 90)
			grade = 'A';
		else if (testScore < 80)
			grade = 'B';
			else if (testScore < 70)
				grade = 'C';
			else if (testScore < 60)
				grade = 'D';
			else grade = 'F';
		System.out.println("Grade = " + grade);
	}
		
	public static void testingStrings()
	{
		String original = new String();
		StringBuilder result = new StringBuilder("hi");
		int index = original.indexOf('a');
		result.setCharAt(0, original.charAt(0));
		result.setCharAt( 1, original.charAt(original.length()-1));
		result.insert(1, original.charAt(4));
		result.append(original.substring(1,4));
		result.insert(3, (original.substring(index, index+2) + " "));
		System.out.println(result);
	}
		
}

final class Rectangle
{
	public int width;
	public int height;
	
	public int area() 
	{
		int area = width * height;
		return area;
	}
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked due to inactivity on Jan 13 2010
Added on Dec 16 2009
5 comments
3,474 views