为了账号安全,请及时绑定邮箱和手机立即绑定

当用户在新行中按回车键时,他/她必须退出 while 循环。但它不起作用,它不断去新的线路

当用户在新行中按回车键时,他/她必须退出 while 循环。但它不起作用,它不断去新的线路

幕布斯6054654 2022-09-22 10:43:00

我需要做以下练习:a)制作一个新的文本文件 b)将用户的输入放入该文本文件中 c)我们必须在用户继续键入的同时保存所有用户的输入,但是一旦用户在新行中按Enter键(当发送空字符串时),用户必须退出程序。对于编码这个问题,我写了以下代码,但是当我自己尝试时,所以我被困在 while 循环中,当我发送空字符串时无法退出。那么任何人都可以帮助解决这个问题吗?


谢谢


我已经尝试了一些我在youtube上找到的解决方案,比如在 while 循环中生成 if 语句,或者在循环的条件中添加获取用户输入的代码。所以我不知道下一阶段该怎么办。我试图通过 Eclipse 输出查看控制台窗口。



import java.io.*;

import java.util.Scanner;

public class lesson {

    public static void main(String[] args) throws IOException {


        File file = new File("mytext.txt");


        if (file.exists() == false) {

            file.createNewFile();

        }

        PrintWriter pw = new PrintWriter(file);

        System.out.println("Enter a text here: ");

        String str;

         while (true) {

             Scanner input = new Scanner(System.in);

            str = input.next();

            pw.println();

            if (str.equals(null)) {

                break;

            }

        } 

        pw.close();

        System.out.println("Done");

    } 

}


当用户发送空字符串时,他/她必须离开循环。并且必须完成对文件的写入。


查看完整描述

2 回答

?
青春有我

TA贡献1451条经验 获得超8个赞

首先是代码,然后是解释...


import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Scanner;


public class Lesson {

    public static void main(String[] args) {

        File file = new File("mytext.txt");

        try (Scanner input = new Scanner(System.in);

             PrintWriter pw = new PrintWriter(file)) {

            System.out.println("Enter a text here: ");

            String str = input.nextLine();

            while (str.length() > 0) {

                pw.println(str);

                pw.flush();

                str = input.nextLine();

            }

        }

        catch (IOException xIo) {

            xIo.printStackTrace();

        }

        System.out.println("Done");

    }

}

上面的代码至少需要 Java 7,因为它使用尝试资源。 应该关闭,就像应该关闭一样。试用资源可确保它们已关闭。请注意,如果文件 mytext.txt 不存在,则创建新的文件也会创建该文件,如果该文件已存在,则其内容将被删除并替换为您输入的文本。ScannerPrintWriterPrintWriter


之后显示提示,即在此处输入文本,用户输入一行文本。方法将获取输入的所有文本,直到用户按 Enter 键。我再次阅读了您的问题,当用户在未键入任何文本的情况下按Enter键时,程序应退出。当用户执行此操作时,是一个空字符串,即它的长度为零。这意味着我需要在循环之前分配一个值,因此在循环之前第一次调用方法。nextLine()strstrwhilenextLine()while


在循环中,我将用户输入的值写入文件mytext.txt然后等待用户输入另一行文本。如果用户在未键入任何文本的情况下按 Enter 键,则长度为零,循环将退出。whilestrwhile


在 Windows 10 上使用 JDK 12 编写并进行了测试,使用适用于 Java 开发人员的 Eclipse,版本 2019-03。


查看完整回答
反对 回复 2022-09-22
?
慕娘9325324

TA贡献1441条经验 获得超4个赞

为了实现这一点,我们检查输入的长度是否>0:


import java.io.*;

import java.util.Scanner;

public class lesson {

    public static void main(String[] args) throws IOException {


        File file = new File("mytext.txt");


        if (file.exists() == false) {

            file.createNewFile();

        }

        PrintWriter pw = new PrintWriter(file);

        System.out.println("Enter a text here: ");

        String str;

        Scanner input = new Scanner(System.in);

        while ((str = input.nextLine()).length() > 0) {

             //str = input.next();

             pw.println(str);

        } 

        pw.close();

        System.out.println("Done");

    } 

}


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信