我正在尝试创建一个简单的程序,询问用户的年龄,并在用户输入非整数值时显示错误。
以下是我到目前为止所做的事情:
import java.util.Scanner;
public class apples {
public static void main(String args[]) {
Scanner nameinput = new Scanner(System.in);
System.out.println("Please enter your name to begin.");
System.out.println("Hello " + nameinput.nextLine() + "!");
Scanner ageinput = new Scanner(System.in);
System.out.println("Please enter your age");
if(!ageinput.hasNextInt()){
System.out.println("Please enter an integer");
}
System.out.println("You've entered a valid age");
nameinput.close();
ageinput.close();
}
}
这就是我想要的:
每次用户输入非整数时,我都希望出现Please enter an integer
错误。然后用户应该能够再次输入他们的年龄,再次检查它是否是整数等等。这将持续到用户输入一个整数,然后才会显示消息You've entered a valid age
。我确定在这种情况下(for,while,do while)既不使用哪个循环也不确定如何在代码中实现它。
答案 0 :(得分:1)
String stringAge;
do {
System.out.println("Please Enter an int");
stringAge = ageinput.next();
} while (!stringAge.matches("^-?\\d+$")); //regex matches for - sign, and then a number
System.out.println("You entered an int");
int age = Integer.parseInt(stringAge);
答案 1 :(得分:0)
首先,不需要包含<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class verifyLogin_controller extends CI_Controller {
function _construct(){
parent::_construct();
}
public function index()
{
if($_POST["submitLogin"])
{
$userEmail=$this->input->post('email');
$password=$this->input->post('password');
$verify_query = $this->db->from("admin");
$verify_query = $this->db->where(array("admin_userid" => $userEmail,"admin_password"=>$password));
$verify_query = $this->db->limit(1);
$res=$this->db->get()->result();
if($res != null)
{
redirect("homeHeader_controller/index");
}
else
{
redirect("adminLogin_controller/index");
}
}
}
}
输入流的多个Scanner
对象。 (How to use multiple Scanner objects on System.in?)
至于实际代码,这是我想到的:
System.in
答案 2 :(得分:0)
正如您在Java中所知,他们有3种类型的循环:
The while and do-while Statements
do-while
和while
之间的区别在于do-while
在循环底部而不是顶部评估其表达式。因此,do块中的语句总是至少执行一次
while
只是一个预测试循环,即在进入循环体之前将检查 first 的条件:
while(condition) # First check, if true or false
{
# Body
}
然而, do-while
循环,在循环体执行至少一次后检查条件,它是一个后测试循环:
do{
# Body executed at least once
}while(condition);
for
语句提供了一种迭代一系列值的简洁方法。程序员经常将其称为&#34;for
循环&#34;因为它反复循环直到满足特定条件的方式
请注意,在您的代码中,询问用户的年龄,正确的选择是do-while
,因为您需要至少执行一次程序来提示消息并然后你必须检查条件,如果这是你打算做的,那么这就足够了你的目的。但是,您仍然可以使用while
。
这是您的代码编辑:
import java.util.Scanner;
public class apples {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter your name to begin.");
System.out.println("Hello " + input.nextLine() + "!");
System.out.println("Please enter your age");
do{
if(input.hasNextInt()){
System.out.println("You've entered a valid age");
break;
}
else{
System.out.println("Please enter an integer");
input.next();
}
}while(true);
}
}
由于循环的条件是布尔true
,如果您使用while
而不是do-while
,那么 你想改变条件,这取决于你。现在,这段代码非常接近您发布的原始代码,并且从我的角度来看它可以工作,但它可能不是最好的代码,可能有其他方法对同一问题域更简单或更复杂。
答案 3 :(得分:-2)
希望这是你想要的。我建议使用while是要走的路(我的偏好)
使用while ::
public static void main(String args[]) {
Scanner nameinput = new Scanner(System.in);
System.out.println("Please enter your name to begin.");
System.out.println("Hello " + nameinput.nextLine() + "!");
Scanner ageinput = new Scanner(System.in);
System.out.println("Please enter your age");
while (!ageinput.hasNextInt()) {
System.out.println("Please enter an integer");
ageinput.next();
}
System.out.println("You've entered a valid age");
nameinput.close();
ageinput.close();
}
使用for ::
public static void main(String args[]) {
Scanner nameinput = new Scanner(System.in);
System.out.println("Please enter your name to begin.");
System.out.println("Hello " + nameinput.nextLine() + "!");
Scanner ageinput = new Scanner(System.in);
System.out.println("Please enter your age");
for (; !ageinput.hasNextInt();) {
System.out.println("Please enter an integer");
ageinput.next();
}
System.out.println("You've entered a valid age");
nameinput.close();
ageinput.close();
}
使用do while
public static void main(String args[]) {
Scanner nameinput = new Scanner(System.in);
System.out.println("Please enter your name to begin.");
System.out.println("Hello " + nameinput.nextLine() + "!");
Scanner ageinput = new Scanner(System.in);
int i = 0;
do {
if (i == 0) {
System.out.println("Please enter your age");
i++;
} else {
System.out.println("Please enter an integer");
ageinput.next();
}
} while (!ageinput.hasNextInt());
System.out.println("You've entered a valid age");
nameinput.close();
ageinput.close();
}