如何修复用户输入的用户名下标代码

时间:2019-01-26 22:20:25

标签: java

我正在创建一个程序,在该程序中,用户玩游戏时必须猜测数字是高还是低,然后根据答案的结果来打分他们将会输掉还是会赢。元素之一应该是一个简单的代码,用户可以输入自己的姓名(例如:“ John Smith”),然后使用该姓名,扫描空格,然后使用第一个姓氏的字母并将其与名字的首字母(smitJ)。但是,它没有按照我想要的方式工作。

我尝试使用indexOf空间,然后查看它是否与名称匹配,以及使用valueOf来查看它是否匹配。我还在弄弄子字符串号,所以那些可能会关闭。

public class HiLoSummativeUI extends javax.swing.JFrame {

    String name;
    public HiLoSummativeUI() {

        initComponents();
    }
    String spaceIS;
private void nameButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
        name = nameInput.getText();
        System.out.println(name);
        spaceIS = " ";
        System.out.println(spaceIS);
        for (int i=0;i<name.length();i++){
            String s = String.valueOf(" ");
            if(s.equals(spaceIS)) {
                String lastName = name.substring(i, i+3) + name.substring(0,1);
                nameOutput.setText("Hello: " + lastName);
            }
        }
    }                                          

如果我要输入“ John Smith”,则UI应该返回“ smitJ”,但是,它返回类似“ ithJ”的错误代码:

线程“ AWT-EventQueue-0”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:11

1 个答案:

答案 0 :(得分:0)

进行如下所示的更改:

for (int i=0;i<name.length();i++){
                String s = String.valueOf(name.charAt(i));
                if(s.equals(spaceIS)) {
                    String lastName = name.substring(i+1, i+5) + name.substring(0,1);
                    nameOutput.setText("Hello: " + lastName);
                }
            }

由于我们在第space个索引处有一个i,因此我们从i+1索引(包括)开始到i+5(不包括)。