Java 使用If语句执行
我的IF状况有一个小问题。此方法读取用户输入并扫描文本文件以查找输入的文本。这很有效。如果找不到输入,我想执行Writer方法。这就是我的问题所在。我似乎无法返回找到的行并退出程序。相反,我返回一个找到的行,然后调用writer方法,这不是我想要做的Java 使用If语句执行,java,Java,我的IF状况有一个小问题。此方法读取用户输入并扫描文本文件以查找输入的文本。这很有效。如果找不到输入,我想执行Writer方法。这就是我的问题所在。我似乎无法返回找到的行并退出程序。相反,我返回一个找到的行,然后调用writer方法,这不是我想要做的 public static void parseFile(String s) throws FileNotFoundException { File file = new File("data.txt"); Scanner
public static void parseFile(String s) throws FileNotFoundException {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
final String lineFromFile = scanner.nextLine();
if (lineFromFile.contains(s)) {
// a match!
System.out.println(lineFromFile);
}
else{
Writer();
}
}
}
这是我的写作方法
public static void Writer() {
Scanner Keyboard = new Scanner(System.in);
Scanner input = new Scanner(System.in);
File file = new File("data.txt");
try (BufferedWriter wr = new BufferedWriter(new FileWriter(
file.getAbsoluteFile(), true))) { // Creates a writer object
// called wr
// file.getabsolutefile
// takes the filename and
// keeps on storing the old
System.out
.println("I cannot find this line... Enter new line"); // data
while ((Keyboard.hasNext())) {
String lines = Keyboard.nextLine();
System.out.print(" is this correct ? ");
String go = input.nextLine();
if (go.equals("no")) {
System.out.println("enter line again");
lines = Keyboard.nextLine();
System.out.print(" is this correct ? ");
go = input.nextLine();
}
if (go.equals("yes")) {
wr.write(lines);
wr.write("\n");
wr.newLine();
wr.close();
}
System.out.println("Thankk you");
break;
}
} catch (IOException e) {
System.out.println(" cannot write to file " + file.toString());
}
}
使用标志来标识是否找到输入
s
,请尝试这种方式
public static void parseFile(String s) throws FileNotFoundException {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
int flag_found=0;
while (scanner.hasNextLine()) {
final String lineFromFile = scanner.nextLine();
if (lineFromFile.contains(s)) {
// a match!
System.out.println(lineFromFile);
flag_found = 1;//Input is found
}
}
if(flag_found==0){// input is not found in the txt file so flag_found remains 0
Writer();
}
}
我会重新安排你的计划,这样
- 另一个最常用的方法是读取用户输入李>
- 只为任何输入创建一个扫描仪,例如System.in,Every,如果不这样做,您会感到困惑。e、 g.使其成为
全局版。这通常是一个错误的选择,但在您的情况下,您正在包装一个全局字段静态最终版
- 这个最外层的函数有一个循环,它会一直执行一个动作,直到需要停止为止。您可以设置标志或使用
break代码>或
返回代码>以中断循环
- 另外,请确保只打开一次文件。我也会用最外层的方法来做
- 你分解了你的程序,所以你有一种方法来读取一个文件,从中找到你需要的,还有另一种方法来处理第二个文件,等等
Writer
-方法的原因是,循环将继续执行,直到文本文件结束。您可以使用break
退出while
-循环:
public static void parseFile(String s) throws FileNotFoundException {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
final String lineFromFile = scanner.nextLine();
if (lineFromFile.contains(s)) {
// a match!
System.out.println(lineFromFile);
break; // <--- break out of the loop when a match is found.
}
else
{
Writer();
}
}
}
publicstaticvoidparsefile(字符串s)抛出FileNotFoundException{
File File=新文件(“data.txt”);
扫描仪=新扫描仪(文件);
while(scanner.hasNextLine()){
最后一个字符串lineFromFile=scanner.nextLine();
如果(lineFromFile.contains)){
//比赛!
System.out.println(lineFromFile);
break;//似乎可以将该方法编写为:
public static String parseFile(String s) throws FileNotFoundException {
File file = new File("data.txt");
boolean inputFound = false;
Scanner scanner = new Scanner(file);
String lineFromFile;
while (scanner.hasNextLine()) {
lineFromFile = scanner.nextLine();
if (lineFromFile.contains(s)) {
// a match!
inputFound = true;
break;
}
}
if(!inputFound) {
writer(); //camel case should be used.
return ""; //empty string
} else {
return lineFromFile;
}
}
在旁注中,方法名称应该是驼峰大小写。另外,您不需要每次在循环中创建新字符串lineFromFile
。请更正您的描述,您正在为if和else编写find line,我想,其中一个不应该被找到。我建议使用s和linefrom file进行一些println。您能给我们一个输出吗第一个if语句中的s和linefromfile的t为什么要在Writer函数中再次读取键盘输入?您的描述非常混乱。首先,您说如果文件缺少一行,您想在文件中写入一行,然后您说要返回找到的行并退出程序,然后您说不想返回找到的行并调用writer方法。你到底想做什么?一个离题风格的建议:在Java中,方法的名称以小写字母开头,所以writer()
。如果你想区分静态方法调用,请使用类名,ClassName.writer();
。当有一个几乎通用的约定时(对于Java符号名,有),如果你遵循它,生活会变得容易得多。