java - 由于括号,程序无法编译
问题描述
我正在用 Java 编写一个游戏,在编译和调试之后,唯一的错误是它在解析时到达了文件的末尾。
我看了看,确保所有的支架都是平衡的。我意识到我缺少一个右括号,所以我在应该的地方添加了一个。再次编译后,错误更多,好像括号放错了一样。
下面是第 94 行没有括号的版本。我知道整个文件不适合发布,但问题并不特定于我知道的几行代码。
import java.util.Scanner;
import java.util.Random;
public class NATO{
public static void main(String[] args){
float finalScore = 0;
float numberCompleted = 0;
float numberCorrect = 0;
int gameLength = 10;
boolean playing = true;
String A = "Alpha";
String B = "Beta";
String C = "Charlie";
String D = "Delta";
String E = "Echo";
String F = "Foxtrot";
String G = "Golf";
String H = "Hotel";
String I = "India";
String J = "Juliett";
String K = "Kilo";
String L = "Lima";
String M = "Mike";
String N = "November";
String O = "Oscar";
String P = "Papa";
String Q = "Quebec";
String R = "Romeo";
String S = "Sierra";
String T = "Tango";
String U = "Uniform";
String V = "Victor";
String W = "Whiskey";
String X = "Xylophone";
String Y = "Yankee";
String Z = "Zulu";
while(playing == true) {
try {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println("Welcome to the NATO speed game! Press [ENTER] to start...");
}
catch (IOEXCEPTION ioe) {
System.out.println("Index out of bounds exception raised ^");
}
System.out.println("Game starting in 3...");
System.out.println("Game starting in 2...");
System.out.println("Game starting in 1...");
while(numberCompleted <= gameLength){
int rnd = Random().nextInt(args.length);
String word = args[rnd];
System.out.println(word.charAt(1));
System.out.println(": ");
String answerIncludingSpaces = System.in.nextLine;
String answerUncapitalized = answerIncludingSpaces.replaceAll("\\s+", "");
String answer = answerUncapitalized.charAt(1).toUpperCase;
if(answer != word) {
float numberCompleted = numberCompleted + 1;
}
else if(answer == word){
float numberCorrect = numberCorrect + 1;
}
else {
System.out.println("Something went wrong. Please restart the game.");
break;
}
}
float finalScore = (numberCorrect / numberCompleted);
System.out.println("Game over.");
System.out.println("Your score was " + finalScore + ". Would you like to play again? Y/N");
if(System.nextLine.toUpperCase == "Y") {
continue;
}
else {
system.out.println("Thank you for playing!");
break;
}
}
}
}
当我在第 94 行添加括号时它显示的错误消息:
解决方案
您缺少InputStreamReader
和的导入BufferedReader
。system
并且IOEXCEPTION
没有正确大写(并且IOException
拼写正确时需要导入)。您有一些方法没有在后面加上括号(例如nextLine
在第 83 行)。您需要将new
beforeRandom()
放在第 57 行。
由于finalScore
已经float
在第 7 行声明为 a,您需要float
在第 79 行删除它之前的。您应该只在创建变量时声明它的类型。在第 79 行的第二个float
声明中,它试图创建第二个finalScore
失败的变量,因为你不能有两个同名的变量。删除该float
行上的声明将使其正确修改现有finalScore
变量。同样的想法也适用于其他地方,例如numberCompleted
第 66 行和numberCorrect
第 70 行。
此外,在第 63 行,您需要执行Character.toUpperCase(answerUncapitalized.charAt(1))
. 目前您正在尝试调用toUpperCase
a char
,而原语没有方法,所以这是不正确的。
但实际上,您应该使用可以帮助您解决此问题的应用程序,例如 Eclipse。我在 Eclipse 中复制并粘贴了它,它可以很容易地查看问题所在,并建议对其中一些问题进行适当的修复。
推荐阅读
- c++ - 没有模板你能完美转发吗
- javascript - TypeError 'Cannot read property/undefined' 使用 toString 属性时
- mysql - 如何在mysql查询中使用通配符?
- flutter - 如何访问文档中的数据
- arrays - 如何根据条件创建固定的新 numpy 数组值 - 股票价格
- asp.net-mvc - 如何从 MVC 迁移到 Blazor 服务器端?
- python - 类型对象'userInfo'没有属性'authenticate'-不同用户表django中的登录身份验证
- amazon-web-services - 为什么 AWS DMS 偶尔会遇到各种错误?
- css - 具有多个匹配节点的类名的 TestCafe 选择器
- sql - 何时以及如何在 PostgreSQL 中使用窗口函数?