我班上的编译器错误

时间:2014-12-19 20:37:16

标签: java

我试图为TF2 crates创建一个无效的模拟器,但由于编译器错误,我无法运行它。代码行中带有注释的错误。

import java.util.Random;
import java.util.Scanner;
import javax.swing.JOptionPane;

import static java.lang.System.out;

public class Runner {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String vitaSaw = "You got a Vita-Saw!";
        String gunSlinger = "You got a Gunslinger!"; 
        String equaLizer = "You got an Equalizer!";
        String scottishResistance = "You got a Scottish Resistance!";
        String oldGuad = "You got an Old Guadalajara!";
        String napperRes = "You got a Napper's Respite!";
        String nameTag = "You got a Name Tag!";
        String whitePaint = "You got An Extrodinary Abundance of Tinge!";
        String blackPaint = "You got a Distinctive Lack of Hue!";
        String unUsual = "****CONGRATULATIONS**** YOU JUST GOT AN UNUSUAL!";
        Scanner keyboard = new Scanner(System.in);
        char input;

        do {
            out.print("Uncrate? (y/n)");
            input =
            keyboard.findWithinHorizon("." ,0) .charAt(0); // Error 1
        } while (input = "y");  // Error 2

        int val = new Random().nextInt(100) + 1;    

        if (val = 1) { // Error 3
            {
            JOptionPane.showMessageDialog
                (null, unUsual);
            }
        }   

        if (val != 1 && val <= 11) {
            {
            JOptionPane.showMessageDialog
                (null, vitaSaw);
            }
        }

        if (val > 11 && val <= 22) {
            JOptionPane.showMessageDialog
                (null, gunSlinger);
        }

        if (val > 22 && val <= 33) {
            {
            JOptionPane.showMessageDialog
                (null, equaLizer);
            }
        }

        if (val > 33 && val <= 44) {
            {
            JOptionPane.showMessageDialog
                (null, scottishResistance);
            }
        }

        if (val > 44 && val <= 55) {
            {
            JOptionPane.showMessageDialog
                (null, oldGuad);
            }
        }

        if (val > 55 && val <= 66) {
            {
            JOptionPane.showMessageDialog
                (null, napperRes);
            }
        }

        if (val > 66 && val <= 77) {
            {
            JOptionPane.showMessageDialog
                (null, nameTag);
            }
        }

        if (val > 77 && val <= 88) {
            {
            JOptionPane.showMessageDialog
                (null, whitePaint);
            }
        }

        if (val > 88 && val <= 99) {
            {
            JOptionPane.showMessageDialog
                (null, blackPaint);
            }
        }
    }
}

错误1:

  

对于类型Scanner,方法findWithinHorion(String,int)未定义。

错误2:

  

类型不匹配错误无法从char转换为布尔值

错误3:

  

类型不匹配错误无法从int转换为boolean

如何解决这些问题?

4 个答案:

答案 0 :(得分:2)

  

错误1:类型Scanner的方法findWithinHorion(String,int)未定义。

在这行代码中注明:

input = keyboard.findWithinHorizon("." ,0) .charAt(0);

您已声明变量Scanner keyboard java.util.Scanner 类中没有带签名findWithinHorion(String, int)的方法。这是一个错字,你错过了z。您正在寻找的方法是findWithinHorizon

input = keyboard.findWithinHorizon("." ,0) .charAt(0);
  

错误2:类型不匹配错误无法从char转换为布尔值

注意到这里:

} while (input = "y");

输入为char,单个=为变量赋值。您需要在此处使用等式比较器:==。此外,双引号用于文字String,单引号更改用于char

} while (input == 'y');
  

错误3:类型不匹配错误无法从int转换为布尔值

注意到这里:

if (val = 1) {

与错误2类似的情况。改为使用==

if (val == 1) {

答案 1 :(得分:0)

你需要使用==而不是=表示错误2而错误3. ==是java中的相等运算符,而=只是分配,编译器将这些作为字符串和int而不是布尔值。

答案 2 :(得分:0)

对于错误2和错误3,正如Panther所说,对于错误1,你错过了z(虽然代码中没有遗漏),如果你还遇到它,我不知道但是也许它在你的jdk版本中,试试更新jdk,我安装了8版。

答案 3 :(得分:0)

我不知道你为什么会遇到第一个错误,但它基本上说它找不到方法findWithinHorizo​​n(String,int)。你可以试试这个:

findWithinHorizon(Pattern.compile(".", 0))

第二个错误是因为您使用了赋值运算符(=)。您必须对String类使用equals方法:

while (input.equals("y"));

第三个错误与第二个错误相同。这里的solutuon是使用equals运算符(==):

if (val == 1)

您必须使用String类中的equals方法来检查两个字符串是否相等,因为==仅适用于基本数据类型。