我正在制作一个程序,每当输入空 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;

 }

 
}