java - 字符串索引越界异常 : String index out of range 0

标签 java indexing

我正在尝试编写一个程序来获取用户输入的第一个字母来生成用户名。我试图编写它,以便如果用户将输入留空,则用于生成用户名的字母默认为字母“z”。

这是我的完整代码:

    import java.util.Scanner;
    /**
      UsernameGenerator.java
      Generates a username based on the users inputs.
      @author: Evan Fravert
      */
public class UsernameGenerator {
/**
  * Generates a username based on the users inputs.
  *@param args command line argument
  */
  public static void main(String[] args)
{ // abcde
  String first;
  String middle;
  String last;
  String password1;
  String password2;
  int randomNum;
  randomNum = (int) (Math.random() * 1000) + 100;
  Scanner userInput = new Scanner(System.in);
  System.out.println("Please enter your first name:");
  first = userInput.nextLine();
  String firstLower = first.toLowerCase();
  System.out.println("Please enter your middle name:");
  middle = userInput.nextLine();
  String middleLower = middle.toLowerCase();
  System.out.println("Please enter your last name:");
  last = userInput.nextLine();
  int lastEnd = last.length()-1;
  String lastLower = last.toLowerCase();
  System.out.println("Please enter your password:");
  password1 = userInput.nextLine();
  System.out.println("Please enter your password again:");
  password2 = userInput.nextLine();

  char firstLetter = firstLower.charAt(0);
  char middleLetter = middleLower.charAt(0);
  char lastLetter = lastLower.charAt(0);
  char lastLast = lastLower.charAt(lastEnd);

  if first.length() == 0) {
      firstLetter = 'z';
  }
  else {
  firstLetter = firstLower.charAt(0);
  }

  System.out.println("Your username is " + firstLetter + ""
  + middleLetter + "" + lastLetter + "" + "" + lastLast + "" + randomNum); 
  System.out.println("Your password is " + password1);
  System.out.println("Welcome " + first + " " + middle + " " + last + "!");
}
}

最佳答案

这行不通:

char firstLetter = firstLower.charAt(0);
...

if (first.length() == 0) {
    firstLetter = 'z';
}

如果长度为0,则charAt(0)将在标题中抛出异常。你可以这样做:

char firstLetter = first.length() == 0 ? 'z' : firstLower.charAt(0);

关于java - 字符串索引越界异常 : String index out of range 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380837/

相关文章:

java - 无法将集合类作为泛型方法中的参数传递

sql-server - 为什么 SQL Server 向非唯一聚集索引添加一个 4 字节整数

ruby-on-rails - Rails 数据库索引 : Is this an anti-pattern?

performance - ArangoDB 索引在边集合中的使用

java - Java 会自动异步调用这些方法吗?

Java 套接字服务器和 MySQL

java - 如何解决 alfresco sdk 中的 alfresco webscripts 中的 CORS 错误?

java - 一旦在 BufferedImage Java 中不再找到颜色就停止脚本

java - Apache Solr - 如何索引源代码文件

java - 准备语句: getIngredientByName