Java启动错误选择不包含主类型 [英] Java launch error selection does not contain a main type

查看:167
本文介绍了Java启动错误选择不包含主类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Java和Eclipse中的全新手。我去寻找很多帮助,但仍然感到困惑。从Eclipse我单击运行然后选择Java应用程序,我立即得到这个错误。这是我的源代码:

  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(每个输入行将是由COMMA分隔的一对数字。);
System.out.println(第一个数字必须是小于10000的无符号数字。最大例如:9999);
System.out.println(第二个数字是'target'数字。
System.out.println(要输入的输入行的示例:);
System.out.println(4721,75); $ int $ i = 1; i <6; i ++)//每次在这个循环中,我们有一个新的
// set。
{
System.out.println(根据上面的语法规则键入一对数字);
String iLine; //声明一个变量来保存名称。
扫描仪=新扫描仪(System.in);
iLine = in.nextLine(); //从控制台读取一行。
in.close(); //注2
NumberSet set = ParseRawInput(i,iLine);
if(set.IsValid()){
System.out.println(有效输入。卡片号撕开:+ set.getCardNumber()
+;目标号码: + set.getTargetNumber());
String cardNumber = set.getCardNumber();
int target = set.getTargetNumber();
AnalyzeNumber(cardNumber,target); //解决这套
//数字
} else {
System.out.println(Invalid set of numbers。输入格式: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; (int digits = 1; digits possibleAnswers [answer] = PossibleAnswer(0,digits,cn);

答案++;
}
System.out.println(-----------);
possibleAnswers [answer] = PossibleAnswer(1,2,cn);
答案++;
possibleAnswers [answer] = PossibleAnswer(1,3,cn);
答案++;
System.out.println(-----------);
possibleAnswers [answer] = PossibleAnswer(2,2,cn);
答案++;
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 =>哪个数字位置获得多长度调整
int n = cn.length();
int [] number = new int [n]; //持有个人加成
int sum = 0;
int LEN = 1; //我们需要的默认长度
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; //总是递增至少1个位置
if(i + lengthDigits> n)
lengthDigits = 1;
}
System.out.println(addends +=+ String.valueOf(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; //强制退出while循环
}
if(i + LEN> n)
LEN = 1;
}
System.out.println(addends +=+ String.valueOf(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; //总是递增至少1个位置
if(i == extender){
LEN = lengthDigits;
}
if(i + LEN> n)
i = n; //强制退出
}
System.out.println(addends +=+ String.valueOf(sum));
返还金额
}
return 0;
}

private int FindBiggestNearTarget(int [] possibles,int target){
int [] sumArray = possibles;
Arrays.sort(sumArray);
//用于交换值的临时变量
int temp;
//反转数组
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; //不应该发生
}

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; //确保2个令牌由逗号分隔
//在第一个令牌上工作:
String cardNumberString = stringArray [0] .trim(); //修剪任何空格
//从此令牌
if(cardNumberString.length()> 4)
return errorSet; //确保令牌是4个字节或更少
//声明标记为整数
int cardNumber = Integer.parseInt(cardNumberString);

//在第二个令牌上工作:
String targetNumberString = stringArray [1] .trim(); //修剪
//空白从
// token
if(targetNumberString.length()> 4)
return errorSet; //确保令牌是4字节以下

int targetNumber = Integer.parseInt(targetNumberString); //转换成
// 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;
返回true;
}
}


解决方案

你无法像C ++那样定义主要的方法。



对于Java解释器,主要方法必须始终为公共和静态。因此,您需要将主要方法签名更改为

  public static void main(String args [])

尝试一下,随时问一下。 : - )


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;
    }
}

解决方案

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. :-)

这篇关于Java启动错误选择不包含主类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆