0

我有这个代码:

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

有任何想法吗?这只是一个非常大的方法的一部分,但这是唯一引起麻烦的扫描仪。

4

2 回答 2

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(),然后解析ints 或单独的单词。

于 2013-03-25T22:35:31.003 回答
0

s.nextLine()当您想在扫描下一个输入之前等待用户输入键时,您需要使用 。利用:

try {
    cuenta = Integer.parseInt(s.nextLine());
} catch (Exception e){
    //Do whatever you want.
}
于 2013-03-25T22:35:39.910 回答