输入后如何让扫描仪停留在同一条线上?

时间:2017-12-01 18:17:11

标签: java string time computer-science

所以基本上我想要在分钟和秒钟都要求时间。我想知道是否有一种方法可以让它保持在同一条线上而只是将时间用在两者之间的冒号中,而不是让用户在两个单独的行中输入答案。

这就是我所拥有的:

'Scanner input = new Scanner (System.in);
 System.out.print ("Enter Minutes: ");
 int min = input.nextInt();
 System.out.print ("Enter Seconds: ");
 int sec = input.nextInt()'

然后输出看起来像这样:

 Enter Minutes: 2
 Enter Seconds: 12

我希望它看起来像这样:

 Enter Time: 2:12

我猜我没有办法做到这一点,但如果有人有任何建议我会很感激。感谢。

2 个答案:

答案 0 :(得分:1)

首先,您要求用户抽出时间。

System.out.print ("Enter Time: ");
String time = input.nextString();
String time = "2:12";

然后使用split函数分割时间并使用冒号作为分隔符。

String[] parts = time.split(":");

这样做会产生两个字符串。

String time = parts[0]; // 2
String minutes = parts[1]; //12

答案 1 :(得分:0)

为此,我们可以通过在BufferedReader对象中包装一个InputStreamReader对象来读入用户的输入String。

然后,我们使用BufferedReader的readLine()方法来读取输入String - 比如两个由空格字符分隔的整数。可以使用String.split()方法将它们解析为两个单独的字符串,然后使用上面建议的parseInt方法将它们的值分配给a和b。

(我们可能也希望验证用户输入以确保其格式正确,但此问题尚未解决。)

首先,请记住为Reader对象导入java.io. *。 readLine()方法抛出IOException,因此Main方法可以这样:

public static void main(String[] args) throws IOException 
{ 
BufferedReader in = new BufferedReader( 
new InputStreamReader( 
System.in));

String[] input = new String[2]; 
int a; 
int b;

System.out.print("Please enter two integers: "); 
input = in.readLine().split(" ");

a = Integer.parseInt(input[0]); 
b = Integer.parseInt(input[1]);

System.out.println("You input: " + a + " and " + b); 
}

-------------附加信息--------------

我忘记了Scanner对象。这可以使事情变得简单得多。我们导入java.util.Scanner

,而不是导入Reader对象

Scanner对象可以直接解析用户输入,因此我们不必拆分字符串或使用parseInt。此外,我们不一定需要担心捕获IOException。并且,用户可以根据需要在同一行或甚至不同的行上输入两个整数。

使用Scanner对象,我们更简单的主要功能可以是这样的:

public static void main(String[] args) 
{ 
System.out.print("Please enter two integers: ");

Scanner sc = new Scanner(System.in);

int a = sc.nextInt(); 
int b = sc.nextInt();

System.out.println("You input: " + a + " and " + b); 
}