我一直收到一个错误:
error: variable aryResponse might not have been initialized
if(answers.charAt(i) == aryResponse[i].charAt(i))
我想这是因为我在while循环中初始化变量。但是我不知道如何解决这个问题?
当我需要它初始化为循环给定的值时,如何增加变量的范围?
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
class ExamAnalysis
{
public static void main(String[] args) throws FileNotFoundException
{
Scanner in = new Scanner(System.in);
System.out.println("Welcome to Exam Analysis. Let's begin ...");
System.out.println();
System.out.println();
System.out.print("Please type the correct answers to the exam questions, one right af$
String answers = in.nextLine();
int answersLength = answers.length();
System.out.println();
System.out.print("What is the name of the file containing each student's responses to$
String temp = in.nextLine();
File file = new File(temp);
Scanner in2 = new Scanner(file);
/*Code Relevant To This Question Begins Here */
int lines = 0;
String[] aryResponse;
while (in2.hasNextLine())
{
String line = in2.nextLine();
aryResponse = new String[lines];
aryResponse[lines] = line;
System.out.println("Student #" + lines + "'s responses: " + line);
lines++;
}
System.out.println("We have reached \"end of file!\"");
System.out.println();
System.out.println("Thank you for the data on " + lines + " students. Here's the ana$
int[] aryCorrect = new int[lines];
for (int i = 0; i < answersLength; i++)
{
if(answers.charAt(i) == aryResponse[i].charAt(i))
{
aryCorrect[i] ++;
}
}
}
}
只需在循环外初始化它
String[] aryResponse=null;
现在将内存分配给aryResponse
内部循环
aryResponse = new String[n]; //n is the size of array
如果我理解了你的代码,arySolutions
有几行,如果变量从来没有初始化的同时循环,这意味着你有0行,所以,这将是足够做两件事情:
1-将响应初始化为空:
String[] aryResponse = null;
2-在while循环的末尾添加此行:
if(aryResponse == null) aryResponse = new String[0];
改变这个
String[] aryResponse;
到
String[] aryResponse = null;
记住测试aryResponse
不是null
,
if (aryResponse != null) {
for (int i = 0; i < answersLength; i++) {
if (answers.charAt(i) == aryResponse[i].charAt(i)) { // what is this testing?
aryCorrect[i]++;
}
}
}
这是必要的,因为
while (in2.hasNextLine()) { // <-- might not be true
// so this doesn't happen.
}
问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事
所以我已经在结果中声明了相关字符串的值,但是它仍然说我的变量“result”可能还没有初始化。 我正在尝试实现与此类似的输出。任何人都可以帮我吗?谢谢!
我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我
我不知道这段代码有什么问题,也不知道为什么会出现错误: 变量isPrime可能尚未初始化 这是完整的代码:
问题内容: 我得到错误: TestCounter.java:115:变量计数器可能尚未初始化counters [i] = new Counter(i); 而且我不知道如何解决它。我知道我的课程“” 有效。下面是我的代码,如果您可以看一下,我将非常高兴。此代码包装在类的main方法中。 问题答案: 您尚未创建数组,只是声明了变量。 您需要这样做: 或类似的东西
在最后一行显示为时出错 :::: 变量结果可能尚未初始化 这是我的代码: