读取和比较文本文件中的字符串,未初始化的变量

时间:2013-05-14 01:14:52

标签: java file-io

我收到了错误

  

本地变量名称和密码可能尚未初始化,

表示if语句。如果我将括号中的第二个字符串更改为引号中的某些内容,或者如果我将变量设置为0,那么这些错误就会消失,但是我还需要将它们更改为int,我需要它们为{{1} }}

我正在尝试将文本文件中的用户名和密码与新输入的用户名和密码进行比较。程序也应该在3次不良尝试后退出,所以我可能也会将String放在错误的位置。

System.out.println("Goodbye!");

3 个答案:

答案 0 :(得分:1)

您永远不会初始化namepassword,因此您当然会收到此错误。

您初始化secondnamesecondpassword,但您的条件会检查未初始化的namepassword

答案 1 :(得分:0)

在JAVA方法中,必须首先初始化任何局部变量才能使用它。在你的情况下,你试图比较名称和&代码中的密码永远不会被初始化或赋值。最好将字符串初始化为NULL或空字符串,如“”或任何所需的值。

答案 2 :(得分:0)

你有很多问题。

错误是由于您从未将任何值分配给变量“name”和“password”,但是然后检查这些变量是否与您读取的secondname和secondpassword变量相匹配。因为名称和密码根本不会获得任何值,所以比较不可能是您想要的,因此编译器将其标记为错误。

您可以通过在声明它们时为某些值指定名称和密码来消除错误,但是您的程序仍然无法正常工作,因为无论您分配什么值,它可能不会是你的程序用户希望与之比较的东西。

大概你的意图是从你打开并读入的输入文件中读取名称和密码的值,但实际上你没有对该文件中的值做任何事情,除非立即扔掉它们。看看循环

while(inputStream.hasNextLine()) {
    line = inputStream.nextLine();
}

这个循环将从文件的每一行读取,但是一旦你读了一行,就把你读到的任何内容丢弃到行变量中,因为你必须重用那个变量来读取下一行,你将会也立即扔掉。在循环结束时,您已将文件的最后一行保存到line,但程序的其余部分也不使用line变量。

你需要在该循环中放入一些逻辑来读取你想从文件中读取的内容,将其存储在名称和密码变量中,然后你会有一些希望,当你做equalsIgnoreCase的东西时你就是'实际上将比较对您的程序有一定意义的变量。