站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > Java Tutorial 5.0 英文版

Solving Common Coding Problems - Java Tutorial 5.0 英文版

The JavaTM Tutorial
Previous Page Lesson Contents Next Page Start of Tutorial > Start of Trail Search
Feedback Form

Trail: Learning the Java Language

Lesson: Solving Common Coding Problems

This section covers some common problems that you might encounter when learning the Java language. After each problem is a list of possible solutions.

Problem: The compiler complains that it can't find a class.

  • Make sure you've imported the class or its package.
  • Unset the CLASSPATH environment variable, if it's set.
  • Make sure you're spelling the class name exactly the same way as it is declared. Case matters!
  • If your classes are in packages, make sure that they appear in the correct subdirectory as outlined in Managing Source and Class Files (in the Learning the Java Language trail).
  • Also, some programmers use different names for the class name from the .java filename. Make sure you're using the class name and not the filename. In fact, make the names the same and you won't run into this problem for this reason.

Problem: The interpreter says it can't find one of my classes.

  • Make sure you specified the class name--not the class file name--to the interpreter.
  • Unset the CLASSPATH environment variable, if it's set.
  • If your classes are in packages, make sure that they appear in the correct subdirectory as outlined in Managing Source and Class Files (in the Learning the Java Language trail).
  • Make sure you're invoking the interpreter from the directory in which the .class file is located.

Problem: My program doesn't work! What's wrong with it?

The following is a list of common programming mistakes by novice Java programmers. Make sure one of these isn't what's holding you back.

  • Did you forget to use break after each case statement in a switch statement?
  • Did you use the assignment operator = when you really wanted to use the comparison operator ==?
  • Are the termination conditions on your loops correct? Make sure you're not terminating loops one iteration too early or too late. That is, make sure you are using < or <= and > or >= as appropriate for your situation.
  • Remember that array indices begin at 0, so iterating over an array looks like this:
    for (int i = 0; i < array.length; i++)
        . . .
    
  • Are you comparing floating-point numbers using ==? Remember that floats are approximations of the real thing. The greater than and less than (> and <) operators are more appropriate when conditional logic is performed on floating-point numbers.
  • Are you having trouble with encapsulation, inheritance, or other object-oriented programming and design concepts? Review the information in Object-Oriented Programming Concepts.
  • Make sure that blocks of statements are enclosed in curly brackets { }. The following code looks right because of indentation, but it doesn't do what the indents imply because the brackets are missing:
    for (int i = 0; i < arrayOfInts.length; i++)
        arrayOfInts[i] = i;
        System.out.println("[i] = " + arrayOfInts[i]);
    
  • Are you using the correct conditional operator? Make sure you understand && and || and are using them appropriately.
  • Do you use the negation operator ! a lot? Try to express conditions without it. Doing so is less confusing and error-prone.
  • Are you using a do-while? If so, do you know that a do-while executes at least once, but a similar while loop may not be executed at all?
  • Are you trying to change the value of an argument from a method? Arguments in Java are passed by value and can't be changed in a method.
  • Did you inadvertently add an extra semicolon (;), thereby terminating a statement prematurely? Notice the extra semicolon at the end of this for statement:
    for (int i = 0; i < arrayOfInts.length; i++) ;
        arrayOfInts[i] = i;
    

Previous Page Lesson Contents Next Page Start of Tutorial > Start of Trail Search
Feedback Form

Copyright 1995-2005 Sun Microsystems, Inc. All rights reserved.