当我运行客户端并输入一个数字时,它将作为字符串传递。但是它必须作为整数传递。我该如何改变?并且当用户输入" *"时,也会从while(true)变为do。该计划结束。
while (true){
System.out.print("Enter a number ");
String message = keyboard.nextLine();
out.writeUTF(message);
}
答案 0 :(得分:0)
使用int option = keyboard.nextInt();
在这里看到:if you want to know more
答案 1 :(得分:0)
试试这个:
Scanner.nextInt()
正在回馈一个整数......
实施例
final Scanner in = new Scanner(System.in);
int number = 0;
while(true){
System.out.print("Enter a number ");
number = in.nextInt();
out.writeUTF(number);
}
如果您需要在循环中执行此操作,直到用户输入特定键(例如“*”) 然后:
final Scanner in = new Scanner(System.in);
String input = "";
do {
System.out.print("Enter a number ");
int numberParsed = 0;
input = in.nextLine();
try {
numberParsed = Integer.parseInt(input);
System.out.println(numberParsed);
out.writeUTF(numberParsed);
} catch (final NumberFormatException ex) {
System.err.println("That input could not be parsed to integer....");
}
} while (!input.equals("*"));
答案 2 :(得分:0)
我认为键盘是Scanner
类型的对象。
Scanner
有一个方法nextInt
来检索下一个整数。
否则,您可以使用方法Integer.parseInt
将字符串转换为整数,如下所示:
String message = keyboard.nextLine();
int myInt = Integer.parseInt(message);
答案 3 :(得分:0)
我不会使用nextLine
和writeUTF
,而是使用nextInt
(和hasNextInt
允许您使用{int
终止输入writeInt
1}}。使用try-with-resources
和ByteArrayOutputStream
进行测试,可能类似于
Scanner keyboard = new Scanner(System.in);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (DataOutputStream out = new DataOutputStream(baos)) {
System.out.print("Enter a number ");
while (keyboard.hasNextInt()) {
int v = keyboard.nextInt();
out.writeInt(v);
System.out.print("Enter a number ");
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(Arrays.toString(baos.toByteArray()));