2014-04-21 91 views
0

removeplayer USER1分割功能问题?

代码工作正常与控制台上面的输入。它为我成功移除了玩家'user1'。但是,如果用户没有提及任何用户名,则会提示删除数组列表中的所有玩家。

removeplayer(紧接着输入),下面的代码失败,因为str [1]没有在这里。 但是我希望str [1]好像这个值为null,这有助于我移除所有玩家。

param="0"; 

System.out.print(">"); 

//type_op= in.next(); 

String str=in.nextLine(); 

String[] str1=str.split(" "); 

type_op = str1[0]; 

param = str1[1]; 

String[] param_split = param.split(","); 

if(type_op.equals("removeplayer") && param.equals(null)) 

removeAllPlayers(); 

else if(type_op.equals("removeplayer")) 

removeplayer(); 

我已经尝试使用下一个()为好,但在这种情况下,问题变得如在这种情况下只有removeAllPlayers()的工作更加复杂。

+0

我不确定问题是什么......当用户只在控制台中写入'removeplayer'时会发生错误吗?如果是这样,你必须检查'str1.length'是否为1.如果是,则分配'param = null'。如果不是,则分配'param = str1 [1]'。 –

+0

是的,现在通过检查str1的长度为1来工作。干杯! – MrCoder

+0

我得到了这个工作。然而,这些代码[System.out.print(“>”); String str = in.nextLine();]在任何操作完成后会运行一次额外的时间。这发生在我的三个操作中。我调试并检查了什么是问题,但我不知道什么是错的。有趣的是,上述两条线为一些操作运行了一次额外的时间。编译器进入in.nextLine(),不会要求我输入内容,然后在下一次迭代中重新运行,以求输入。其中一个迭代发生在没有输入任何值的情况下。 – MrCoder

回答

3

一个简单的解决办法是立即检查,以便其中str1阵列要知道,如果没有指定用户,通过检查数组长度:

param = "0"; 

System.out.print(">"); 

//type_op= in.next(); 
String str = in.nextLine(); 

String[] str1 = str.split(" "); 

type_op = str1[0]; 

if (type_op.equals("removeplayer") && str1.length == 1) { 
    removeAllPlayers(); 
} else if (type_op.equals("removeplayer")) { 

    param = str1[1]; 

    String[] param_split = param.split(","); 

    removeplayer(); 
} 

这仅仅是一个简单快捷的解决方案,但它应该管用。 我希望这会帮助你。

+0

真棒!这工作完美。非常感谢尼古拉。 – MrCoder

+0

我得到了这个工作。然而,这些代码[System.out.print(“>”); String str = in.nextLine();]在任何操作完成后会运行一次额外的时间。这发生在我的三个操作中。我调试并检查了什么是问题,但我不知道什么是错的。有趣的是,上述两条线为一些操作运行了一次额外的时间。编译器进入in.nextLine(),不会要求我输入内容,然后在下一次迭代中重新运行,以求输入。其中一个迭代发生在没有输入任何值的情况下。 – MrCoder

+0

你的问题不是很清楚。所以,我想你的'in'对象是一个Scanner in = new Scanner(System.in);对?因此,在读取in.nextLine()之前,可能已经在缓冲区中存在一些回车符,这可能是由于之前与用户的一些交互。如果是这种情况,你可以看看这个问题:http://stackoverflow.com/questions/18273751/flush-clear-system-in-stdin-before-reading – WoDoSc

0

只要将它作为比较

如果(type_op.equals( “removeplayer”)& & PARAM == NULL

removeAllPlayers();

+0

这不会工作,因为数组超出了界限。 str [1]不存在。我通过检查str1的大小来实现这一点。 – MrCoder