连续检查一行输入?

时间:2019-05-01 12:15:04

标签: java

我正在尝试编写一个简单的代码,该代码连续检查用户输入的数字是正数还是负数,并且所有数字都在2行上。 第一行是用户输入,第二行是输出。

我是编码的初学者,也不是一个专业人士,但是我现在已经将Scanner对象放入while循环中,它检查用户输入是否为正。如果为负,则将停止程序。

import java.util.Scanner;
public class basic {
    public static void main(String[] args){
        int numb;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Fill in a random number which ain't negative!");
        while((numb = scanner.nextInt()) > 0) {
            System.out.println("Again!");
        }
        {
            System.out.println("This is a negative!");
            System.exit(1);
        }
    }
}

我想要做的是将其作为输出,并且仅在两行上显示:

1 2 3 4 5 
Again!

如果我在行上输入一个负数,它将更改“再次!”改为“这是负面的!”

1 2 3 4 5 6 -8
This is a negative!

但是现在有了代码,我只能将其作为输出,而不仅仅是两行:

1
Again!

2
Again!

-3
This is a negative!

3 个答案:

答案 0 :(得分:0)

这是控制台输出,因此无法覆盖。 但是,如果您确实希望在控制台上打印出所需的o / p,则可以使用列表并不断向其推送数字并打印列表中的所有项目。

答案 1 :(得分:0)

您可以使用\r重写最后一行。考虑一下:

System.out.println("\r"+yourOutput+" > ")

它用这一行替换了控制台中的最后一行,这就是通过:D来完成在Linux中加载栏的方式。使用此方法显示以前的输入/数字。用户输入将在第二行。当用户按下Enter键并且您的程序已将用户输入作为字符串获取后,对其进行处理并再次执行相同的操作,这一次yourOutput已更新为新信息:

System.out.println("\r"+yourOutput+" > ")

答案 2 :(得分:0)

让我欢迎您阅读关于StackOverflow的第一篇文章!

让Java应用程序清除控制台输出不常见。话虽这么说,有可能,但并非没有调用 OS命令。如评论中所述,如果您这样做的话,这将超出初学者的材料。

但是,

如果要尝试,如here所示,您可以通过执行本机OS命令来清除控制台。如果您使用以下代码(通过链接进行复制,并进行了较小的修改)

public static void clrscr(){
    //Clears Screen in java
    try {
        if (System.getProperty("os.name").contains("Windows"))
            new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
        else
            Runtime.getRuntime().exec("clear");
    } catch (Exception e) {}
}

您可以在代码中使用 clrscr() 调用此,并且您应该可以清除屏幕。

现在查看您的代码,您将不能只使用它,因为您将清除输出,从而清除过去的数字。如果您希望按照描述的方式来显示所有用户输出的位置,则每次清除屏幕时都需要重新打印其所有条目。因此,每次您获得用户输入时:

  1. 您需要输入该内容并将其添加到数字列表中
  2. 清除屏幕
  3. 输出整个列表
  4. 输出您的评估

如果您有任何疑问,请告诉我。 :-)