我有这段代码:
byte[] nombre = new byte[20];
System.out.print("Cuenta a modificar: ");
cuenta = s.nextInt();
boolean existe = estaRepetido(cuenta);
if (existe == false){
System.out.println("La cuenta no existe");
}
else {
String nomCliente;
System.out.print("Nombre: ");
nomCliente = s.nextLine();
System.out.print("Cantidad: ");
double cantidad = Double.parseDouble(s.nextLine());
for( int i = 0; i < 20 && i < nomCliente.getBytes().length; i++ ){
nombre[i] = nomCliente.getBytes()[i];
}
String nomModificar = new String (nombre);
modificar(cuenta, nomModificar, cantidad);
}
但是当在终端上以某种方式在海外运行nomCliente = s.nextLine();以这样的结尾结束:
Cuenta a modificar: 0
Nombre: Cantidad: 0
任何想法?这只是一个非常大的方法的一部分,但这是唯一造成麻烦的扫描仪。
答案 0 :(得分:1)
nextInt()
方法离开\n
(结束行)符号,并由nextLine()
立即拾取,跳过下一个输入。你想要做的是使用nextLine()
作为一切,并在以后解析它:
String nextIntString = keyboard.nextLine(); //get the number as a single line
int nextInt = Integer.parseInt(nextIntString); //convert the string to an int
这是迄今为止避免问题的最简单方法 - 不要混淆“下一步”方法。仅使用nextLine()
然后解析int
或之后单独的单词。
答案 1 :(得分:0)
如果您想在扫描下一个输入之前等待用户输入密钥,则需要使用s.nextLine()
。
使用:
try {
cuenta = Integer.parseInt(s.nextLine());
} catch (Exception e){
//Do whatever you want.
}