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:
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 < 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 < 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 => 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 < 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 > n)
lengthDigits = 1;
}
System.out.println(addends + " = " + String.valueOf(sum));
return sum;
}
if (extender == 1) {
i = 0;
while (i < 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 > n)
LEN = 1;
}
System.out.println(addends + " = " + String.valueOf(sum));
return sum;
}
if (extender == 2) {
i = 0;
while (i < 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 > 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 < 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 < sumArray.length; i++) {
if (sumArray[i] < 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() > 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() > 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 & 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 < 0)
return false;
return true;
}
}
If you are using eclipse and you have declared the “main” method in your program and you have written it inside the class then you have to check that you have added the build path or not. If you have not added then:- go to project properties -> Choose java build path -> Click on the source.
Click on the drop down next to the Run button, After that choose Run Configuration, shows three option, for example i choose java application add class(Name of the class of your project) in that then Click on the ok button ... Run your application :) Show activity on this post. this will help you to fix the problem.
You cannot define the main method as you do in C++.
For the Java interpreter, the main method must always be public and static. So you need to change your main method signature to
public static void main(String args[])
Try this, and feel free to ask further. :-)
Create a new project and make the build path to point to the existing source folders. This will resolve the "Selection does not contain a main type" error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With