我试图为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
如何解决这些问题?
答案 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)
我不知道你为什么会遇到第一个错误,但它基本上说它找不到方法findWithinHorizon(String,int)。你可以试试这个:
findWithinHorizon(Pattern.compile(".", 0))
第二个错误是因为您使用了赋值运算符(=)。您必须对String类使用equals方法:
while (input.equals("y"));
第三个错误与第二个错误相同。这里的solutuon是使用equals运算符(==):
if (val == 1)
您必须使用String类中的equals方法来检查两个字符串是否相等,因为==仅适用于基本数据类型。