我正在制作一个程序,每当输入空 space 或空白 space 时显示错误消息
I am making a program to display error message whenever an empty space or blank space is entered
我正在制作一个程序,当输入为空或为空时显示错误消息 space 并继续直到输入所需的输入。
这是我当前的代码:
public static Person getInput ()
{
Scanner data = new Scanner(System.in);
Person p = new Person();
boolean isEmpty = false;
int personAge = 0;
String personName;
char personGender;
while (isEmpty) {
try {
System.out.println("Name: ");
personName = data.nextLine();
personName.toUpperCase();
if (personName.isEmpty()) {
System.out.println("Please enter your name. ");
} else {
p.setName(personName);
}
System.out.println("AGE: ");
personAge = Integer.parseInt(data.nextLine());
if (personAge >= 1 && personAge <= 50)
{
System.out.println(" ");
} else {
System.err.println("Please enter a number from 1 - 50. ");
}
} catch (Exception e) {
System.err.println("Please enter your age.");
data.next();
} finally {
}
System.out.println("GENDER: ");
personGender = data.next().charAt(0);
p.setGender(personGender);
}
return p;
}
如果我做对了,我还是有点迷茫,或者我还需要纠正一些其他的事情。谢谢
你应该尝试类似循环的方法:
do {
System.out.println("Name: ");
personName = data.nextLine();
if (personName.isEmpty()) {
System.out.println("Please enter your name. ");
}else {
personName = personName.toUpperCase();//String is immutable
p.setName(personName);
}
} while (personName.isEmpty())
我稍微修改了你的程序,让它运行起来。如果您提出问题,当您 post 一个可运行的示例时,帮助您会更方便。
这是我所做的:
package person;
import java.util.Scanner;
public class Person {
private String name = "";
private char gender = ' ';
private int age = 0;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void getInput() {
Scanner data = new Scanner(System.in);
while (getName().trim().isEmpty()) {
System.out.print("Name (not empty): ");
setName(data.nextLine());
setName(getName().toUpperCase());
}
while (getAge() < 1 | getAge() > 50) {
System.out.print("AGE (1 - 50): ");
setAge(Integer.parseInt(data.nextLine()));
}
System.out.print("GENDER (m/f): ");
setGender(data.next().charAt(0));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
@Override
public String toString() {
return String.format("%s (%s) is %d year(s) old", getName(), getGender(), getAge());
}
public static void main(String[] args) {
Person p = new Person();
p.getInput();
System.out.println(p.toString());
}
}
我创建了 getter 和 setter 方法,它们通常用于相互封装 类 并提高重用的可能性。
正如 SMA 已经推荐的那样,使用 while 循环再次询问用户输入是否不是您所期望的是很方便的。
我还建议不仅询问 'AGE:',还询问 'AGE (1-50):' 来引导用户完成输入。
很抱歉还回答了您没有提出的问题 (;
这是我更新后的代码。我想知道我这次做对了没有。
public class PersonApp {
public static void main(String [] args) {
System.out.println("Enter 'exit' in name to quit app");
while(true) {
try {
Person p = Person.getInput();
if(p.getName().equalsIgnoreCase("exit")) break;
}
catch(Exception e) {
System.out.println("Error on input: " + e.getMessage());
}
}
}
}
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Person {
private static String name;
private static int age;
private static char gender;
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public int getAge ()
{
return age;
}
public void setAge (int age)
{
this.age = age;
}
public char getGender ()
{
return gender;
}
public void setGender (char gender)
{
this.gender = gender;
}
public static Person getInput ()
{
Scanner data = new Scanner(System.in);
Person p = new Person();
boolean isEmpty = false;
while (p.getName().trim().isEmpty()) {
try {
System.out.println ("Please enter your name.");
p.setName(data.next());
p.setName(p.getName().toUpperCase());
break;
}
catch (Exception e) {
System.err.println(" Input invalid. ");
p.setName(data.next());
}
}
while (p.getAge() >= 1 && p.getAge() <=50) {
try {
System.out.println("AGE (1-50): ");
p.setAge(Integer.parseInt(data.nextLine()));
if (p.getAge() >= 1 && p.getAge() <=50)
{
p.setAge(p.getAge());
break;
}else {
System.err.println("Please enter a number from 1 - 50. ");
}
}
catch (Exception e) {
System.err.println(" Input invalid. ");
p.setAge(Integer.parseInt(data.nextLine()));
}
}
while (p.getGender() == 'F' || p.getGender() == 'f' || p.getGender() == 'M' || p.getGender() == 'm') {
try {
System.out.println("GENDER (M/F): ");
p.setGender(data.next().charAt(0));
if (p.getGender() == 'F' || p.getGender() == 'f' ||
p.getGender() == 'M' || p.getGender() == 'm') {
p.setGender(p.getGender());
break;
} else {
System.out.println ("Please enter M for male and F for female. ");
}
}
catch (Exception e) {
System.err.println(" Input invalid. ");
p.setGender(data.next().charAt(0));
}
}
return p;
}
}
我正在制作一个程序,当输入为空或为空时显示错误消息 space 并继续直到输入所需的输入。
这是我当前的代码:
public static Person getInput ()
{
Scanner data = new Scanner(System.in);
Person p = new Person();
boolean isEmpty = false;
int personAge = 0;
String personName;
char personGender;
while (isEmpty) {
try {
System.out.println("Name: ");
personName = data.nextLine();
personName.toUpperCase();
if (personName.isEmpty()) {
System.out.println("Please enter your name. ");
} else {
p.setName(personName);
}
System.out.println("AGE: ");
personAge = Integer.parseInt(data.nextLine());
if (personAge >= 1 && personAge <= 50)
{
System.out.println(" ");
} else {
System.err.println("Please enter a number from 1 - 50. ");
}
} catch (Exception e) {
System.err.println("Please enter your age.");
data.next();
} finally {
}
System.out.println("GENDER: ");
personGender = data.next().charAt(0);
p.setGender(personGender);
}
return p;
}
如果我做对了,我还是有点迷茫,或者我还需要纠正一些其他的事情。谢谢
你应该尝试类似循环的方法:
do {
System.out.println("Name: ");
personName = data.nextLine();
if (personName.isEmpty()) {
System.out.println("Please enter your name. ");
}else {
personName = personName.toUpperCase();//String is immutable
p.setName(personName);
}
} while (personName.isEmpty())
我稍微修改了你的程序,让它运行起来。如果您提出问题,当您 post 一个可运行的示例时,帮助您会更方便。
这是我所做的:
package person;
import java.util.Scanner;
public class Person {
private String name = "";
private char gender = ' ';
private int age = 0;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void getInput() {
Scanner data = new Scanner(System.in);
while (getName().trim().isEmpty()) {
System.out.print("Name (not empty): ");
setName(data.nextLine());
setName(getName().toUpperCase());
}
while (getAge() < 1 | getAge() > 50) {
System.out.print("AGE (1 - 50): ");
setAge(Integer.parseInt(data.nextLine()));
}
System.out.print("GENDER (m/f): ");
setGender(data.next().charAt(0));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
@Override
public String toString() {
return String.format("%s (%s) is %d year(s) old", getName(), getGender(), getAge());
}
public static void main(String[] args) {
Person p = new Person();
p.getInput();
System.out.println(p.toString());
}
}
我创建了 getter 和 setter 方法,它们通常用于相互封装 类 并提高重用的可能性。
正如 SMA 已经推荐的那样,使用 while 循环再次询问用户输入是否不是您所期望的是很方便的。
我还建议不仅询问 'AGE:',还询问 'AGE (1-50):' 来引导用户完成输入。
很抱歉还回答了您没有提出的问题 (;
这是我更新后的代码。我想知道我这次做对了没有。
public class PersonApp {
public static void main(String [] args) {
System.out.println("Enter 'exit' in name to quit app");
while(true) {
try {
Person p = Person.getInput();
if(p.getName().equalsIgnoreCase("exit")) break;
}
catch(Exception e) {
System.out.println("Error on input: " + e.getMessage());
}
}
}
}
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Person {
private static String name;
private static int age;
private static char gender;
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public int getAge ()
{
return age;
}
public void setAge (int age)
{
this.age = age;
}
public char getGender ()
{
return gender;
}
public void setGender (char gender)
{
this.gender = gender;
}
public static Person getInput ()
{
Scanner data = new Scanner(System.in);
Person p = new Person();
boolean isEmpty = false;
while (p.getName().trim().isEmpty()) {
try {
System.out.println ("Please enter your name.");
p.setName(data.next());
p.setName(p.getName().toUpperCase());
break;
}
catch (Exception e) {
System.err.println(" Input invalid. ");
p.setName(data.next());
}
}
while (p.getAge() >= 1 && p.getAge() <=50) {
try {
System.out.println("AGE (1-50): ");
p.setAge(Integer.parseInt(data.nextLine()));
if (p.getAge() >= 1 && p.getAge() <=50)
{
p.setAge(p.getAge());
break;
}else {
System.err.println("Please enter a number from 1 - 50. ");
}
}
catch (Exception e) {
System.err.println(" Input invalid. ");
p.setAge(Integer.parseInt(data.nextLine()));
}
}
while (p.getGender() == 'F' || p.getGender() == 'f' || p.getGender() == 'M' || p.getGender() == 'm') {
try {
System.out.println("GENDER (M/F): ");
p.setGender(data.next().charAt(0));
if (p.getGender() == 'F' || p.getGender() == 'f' ||
p.getGender() == 'M' || p.getGender() == 'm') {
p.setGender(p.getGender());
break;
} else {
System.out.println ("Please enter M for male and F for female. ");
}
}
catch (Exception e) {
System.err.println(" Input invalid. ");
p.setGender(data.next().charAt(0));
}
}
return p;
}
}