java bufferedreader 读取一行又一行,而不是在它下面
java bufferedreader read line after another line, not under it
当我使用缓冲读取器时,它会跳过一行然后读取用户输入的内容。有没有办法让它从诸如 System.out.print();?
之类的内容中读取控制台中一行之后的内容
示例: "Enter your age here: "(阅读此处)
而不是: "Enter your age here: "
(阅读此处)
我不一定需要使用 bufferedreader 来处理所有重要的事情,我只是希望它在行后而不是行下读取内容。
编辑:我手头的一个程序的代码,这是一个很好的例子。
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
int y;
int z;
int x = 0;
String line2 = "empty";
String line = "empty";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br2 = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("enter 2 numbers of which the first is larger than the second");
try {
line = br.readLine();
}
catch (Exception e) {
e.printStackTrace();
}
try {
line2 = br2.readLine();
}
catch (Exception e) {
e.printStackTrace();
}
y = Integer.parseInt(line);
z = Integer.parseInt(line2);
if (y < 9 && y > 5 && z > 5 && z < 9) {
if (y > z) {
x = (int) ((Math.random() * (y - z)) + z);
}
if (z > y) {
x = (int) ((Math.random() * (z - y)) + y);
}
}else System.out.println("only numbers between 5 and 9!");
int[] getallen = new int[x];
for (int i = 0; i < x; i++) {
getallen[i] = (int) ((Math.random() * (y - z)) + z);
System.out.println(getallen[i]);
}
}
}
输出:
"enter 2 numbers of which the first is larger than the second
2
5
only numbers between 5 and 9!"
我想要的:
"enter 2 numbers of which the first is larger than the second 2 5
only numbers between 5 and 9!"
变量名是荷兰语,但它们与我的问题并不相关。
我编写了一个简单的程序,只需将 System.out.println(...)
更改为 System.out.print(...)
,它就可以与 Eclipse 一起工作。但是你会遇到分隔数字的问题,例如Enter number(s): 1 2 3
将 return 1 2 3
作为一个字符串。
因此我建议你使用 Scanner
来读取输入,因为它有一个 nextInt()
方法,你可以不断地拉取数字(例如 Enter number(s): 1 2 3
会给你第一次调用 1
、第二次调用 2
和第三次调用 3
)
示例:
public static void main(String[] args) {
int number = 0;
Scanner scanner = new Scanner(System.in);
System.out.print("Enter number(s): ");
while(scanner.hasNextInt()) {
number = scanner.nextInt();
System.out.println("Number was " + number);
}
}
当我使用缓冲读取器时,它会跳过一行然后读取用户输入的内容。有没有办法让它从诸如 System.out.print();?
之类的内容中读取控制台中一行之后的内容示例: "Enter your age here: "(阅读此处)
而不是: "Enter your age here: "
(阅读此处)
我不一定需要使用 bufferedreader 来处理所有重要的事情,我只是希望它在行后而不是行下读取内容。
编辑:我手头的一个程序的代码,这是一个很好的例子。
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
int y;
int z;
int x = 0;
String line2 = "empty";
String line = "empty";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br2 = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("enter 2 numbers of which the first is larger than the second");
try {
line = br.readLine();
}
catch (Exception e) {
e.printStackTrace();
}
try {
line2 = br2.readLine();
}
catch (Exception e) {
e.printStackTrace();
}
y = Integer.parseInt(line);
z = Integer.parseInt(line2);
if (y < 9 && y > 5 && z > 5 && z < 9) {
if (y > z) {
x = (int) ((Math.random() * (y - z)) + z);
}
if (z > y) {
x = (int) ((Math.random() * (z - y)) + y);
}
}else System.out.println("only numbers between 5 and 9!");
int[] getallen = new int[x];
for (int i = 0; i < x; i++) {
getallen[i] = (int) ((Math.random() * (y - z)) + z);
System.out.println(getallen[i]);
}
}
}
输出:
"enter 2 numbers of which the first is larger than the second
2
5
only numbers between 5 and 9!"
我想要的:
"enter 2 numbers of which the first is larger than the second 2 5
only numbers between 5 and 9!"
变量名是荷兰语,但它们与我的问题并不相关。
我编写了一个简单的程序,只需将 System.out.println(...)
更改为 System.out.print(...)
,它就可以与 Eclipse 一起工作。但是你会遇到分隔数字的问题,例如Enter number(s): 1 2 3
将 return 1 2 3
作为一个字符串。
因此我建议你使用 Scanner
来读取输入,因为它有一个 nextInt()
方法,你可以不断地拉取数字(例如 Enter number(s): 1 2 3
会给你第一次调用 1
、第二次调用 2
和第三次调用 3
)
示例:
public static void main(String[] args) {
int number = 0;
Scanner scanner = new Scanner(System.in);
System.out.print("Enter number(s): ");
while(scanner.hasNextInt()) {
number = scanner.nextInt();
System.out.println("Number was " + number);
}
}