title: Java launch error selection does not contain a main type
body: <p>I am a total newbie in Java and Eclipse. I googled for lots of help but still confused. From Eclipse I click run then choose Java application and I get this error immediately. Here is my source code:</p>
  
  <pre><code>import java.util.Arrays;
  import java.util.Scanner;
  
  public class SliceandDice {
      void main(String args[]) {
          System.out.println("This is the BIGGEST program console");
          System.out.println("Each input line will be a pair of numbers separated by a COMMA.");
          System.out.println("First number must be an unsigned number less than 10000. Max example: 9999");
          System.out.println("Second number is the 'target' number.");
          System.out.println("Example of an input line to be typed:");
          System.out.println(" 4721 , 75");
          for (int i = 1; i &lt; 6; i++) // each time in this loop, we have a new
                                      // set.
          {
              System.out.println("Type a pair of numbers according to the syntax rules above:");
              String iLine; // Declare a variable to hold the name.
              Scanner in = new Scanner(System.in);
              iLine = in.nextLine(); // Read one line from the console.
              in.close(); // Note 2
              NumberSet set = ParseRawInput(i, iLine);
              if (set.IsValid()) {
                  System.out.println("Valid inputs. Card Number to tear apart:" + set.getCardNumber()
                          + "; Target Number: " + set.getTargetNumber());
                  String cardNumber = set.getCardNumber();
                  int target = set.getTargetNumber();
                  AnalyzeNumber(cardNumber, target); // solve for this set of
                                                     // numbers
              } else {
                  System.out.println("Invalid set of numbers. Enter in format: nnnn,tttt");
              }
          }
      }
  
      private void AnalyzeNumber(String cn, int t) {
          int n = cn.length();
          int m = n;
          int sums = 4 + 3 + 2 + 1;
          int[] possibleAnswers = new int[sums];
          int answer = 0;
          for (int digits = 1; digits &lt; m; digits++) {
              possibleAnswers[answer] = PossibleAnswer(0, digits, cn);
              answer++;
          }
          System.out.println("-----------");
          possibleAnswers[answer] = PossibleAnswer(1, 2, cn);
          answer++;
          possibleAnswers[answer] = PossibleAnswer(1, 3, cn);
          answer++;
          System.out.println("-----------");
          possibleAnswers[answer] = PossibleAnswer(2, 2, cn);
          answer++;
          System.out.println("-----------");
          int finalAnswer = FindBiggestNearTarget(possibleAnswers, t);
          System.out.println("Best sum (closet to target) = " + String.valueOf(finalAnswer));
      }
  
      private int PossibleAnswer(int extender, int lengthDigits, String cn) {
          // extender =&gt; which digit position gets multilength adjustment
          int n = cn.length();
          int[] number = new int[n]; // holds individual addends
          int sum = 0;
          int LEN = 1; // default length when we need it
          String addends = "";
          int i;
          if (extender == 0) {
              i = 0;
              while (i &lt; n) {
                  addends += cn.substring(i, lengthDigits) + " + ";
                  number[i] = Integer.parseInt(cn.substring(i, lengthDigits));
                  sum += number[i];
                  i = i + lengthDigits; // always increment at least 1 position
                  if (i + lengthDigits &gt; n)
                      lengthDigits = 1;
              }
              System.out.println(addends + " = " + String.valueOf(sum));
              return sum;
          }
          if (extender == 1) {
              i = 0;
              while (i &lt; n) {
                  addends += cn.substring(i, LEN) + " + ";
                  number[i] = Integer.parseInt(cn.substring(i, LEN));
                  sum += number[i];
                  if (i == 0) {
                      i++;
                      LEN = lengthDigits;
                  } else if (i == 1) {
                      i = i + lengthDigits; // i = 3 (last number)
                      LEN = 1;
                  } else if (i == 2) {
                      i = 1;
                      LEN = 3;
                  } else {
                      i = n; // force exit of while loop
                  }
                  if (i + LEN &gt; n)
                      LEN = 1;
              }
              System.out.println(addends + " = " + String.valueOf(sum));
              return sum;
          }
          if (extender == 2) {
              i = 0;
              while (i &lt; n) {
                  addends += cn.substring(i, LEN) + " + ";
                  number[i] = Integer.parseInt(cn.substring(i, LEN));
                  sum += number[i];
                  i = i + LEN; // always increment at least 1 position
                  if (i == extender) {
                      LEN = lengthDigits;
                  }
                  if (i + LEN &gt; n)
                      i = n; // force out of loop
              }
              System.out.println(addends + " = " + String.valueOf(sum));
              return sum;
          }
          return 0;
      }
  
      private int FindBiggestNearTarget(int[] possibles, int target) {
          int[] sumArray = possibles;
          Arrays.sort(sumArray);
          // temporary variable for swapping values
          int temp;
          // reverse the array
          for (int i = 0; i &lt; sumArray.length / 2; ++i) {
              temp = sumArray[i];
              sumArray[i] = sumArray[sumArray.length - i - 1];
              sumArray[sumArray.length - i - 1] = temp;
          }
  
          for (int i = 0; i &lt; sumArray.length; i++) {
              if (sumArray[i] &lt; target) {
                  return sumArray[i];
              }
          }
          return -1; // should not occur
      }
  
      public static NumberSet ParseRawInput(int i, String rawInput) {
          NumberSet errorSet = new NumberSet(-1, "", 0);
          // string[] stringArray = rawInput.Split( new char[] { ','});
          String[] stringArray = rawInput.toString().split(rawInput, ',');
          if (stringArray.length != 2)
              return errorSet; // ensure 2 tokens separated by comma
          // work on 1st token:
          String cardNumberString = stringArray[0].trim(); // trim any whitespace
                                                           // from this token
          if (cardNumberString.length() &gt; 4)
              return errorSet; // ensure token is 4 bytes or less
          // declare token as integer
          int cardNumber = Integer.parseInt(cardNumberString);
  
          // work on 2nd token:
          String targetNumberString = stringArray[1].trim(); // trim any
                                                             // whitespace from
                                                             // token
          if (targetNumberString.length() &gt; 4)
              return errorSet; // ensure token is 4 bytes or less
  
          int targetNumber = Integer.parseInt(targetNumberString); // convert into
                                                                   // int
  
          NumberSet validSet = new NumberSet(i, cardNumberString, targetNumber);
          return validSet;
      }
  }
  
  class NumberSet {
      // Java getter &amp; setter
      private String CardNumber;
      private int TargetNumber;
      private int SetNumber;
  
      public int getSetNumber() {
          return this.SetNumber;
      }
  
      public String getCardNumber() {
          return this.CardNumber;
      }
  
      public int getTargetNumber() {
          return this.TargetNumber;
      }
  
      public NumberSet(int sn, String cn, int t) {
          this.SetNumber = sn;
          this.CardNumber = cn;
          this.TargetNumber = t;
      }
  
      public Boolean IsValid() {
          if (this.SetNumber &lt; 0)
              return false;
          return true;
      }
  }
  </code></pre>