关于如何取消系统输入的Java问题
我想在用户输入q时打印最后一条消息,但它给出了一个错误 语言翻译程序 请输入输入的句子,按q退出: 罗宾于2009年来到加拿大蒙特利尔 罗宾在蒙特利尔呆了11年。蒙特利尔在加拿大 请输入输入的句子,按q退出: 露西于2000年来到德国柏林 露西在柏林呆了20年。柏林在德国 请输入操作中的数字,然后按q退出: q 感谢您使用翻译程序关于如何取消系统输入的Java问题,java,Java,我想在用户输入q时打印最后一条消息,但它给出了一个错误 语言翻译程序 请输入输入的句子,按q退出: 罗宾于2009年来到加拿大蒙特利尔 罗宾在蒙特利尔呆了11年。蒙特利尔在加拿大 请输入输入的句子,按q退出: 露西于2000年来到德国柏林 露西在柏林呆了20年。柏林在德国 请输入操作中的数字,然后按q退出: q 感谢您使用翻译程序 import java.util.Scanner; public class MiniTranslator { public static void mai
import java.util.Scanner;
public class MiniTranslator {
public static void main(String[] args) {
String message ="";
do {
//Declaring scanner
Scanner keyboard = new Scanner(System.in);
//Printing greeting message
System.out.println("---------------------------------------------------------\n"
+"\tLanguage Translator Program\n"
+"---------------------------------------------------------");
System.out.println("Please enter the input sentence (press q to exit): \n");
message = keyboard.nextLine();
String[] arr = message.split("[ ,.]+",8);
String name = arr[0];
String city = arr[3];
String country = arr[4];
String year = arr[6];
int noOfYears =2020 - (Integer.parseInt(year));
System.out.println("\n" + name +" stay in " + city +" for " + noOfYears +" years. "
+ city +" is in " + country +".");
System.exit('q');
keyboard.close();
}
while(message!="q");
if(message =="q") {
System.out.println("Thanks for using translator program");
}
}
}
好的,你有一些迫在眉睫的问题 留言=q不是您在Java中比较字符串的方式,您应该使用!q、 equalsmessage与==相同,例如,它将成为q.equalsmessage 但是,你的主要问题是
System.out.println("Please enter the input sentence (press q to exit): \n");
message = keyboard.nextLine();
String[] arr = message.split("[ ,.]+",8);
String name = arr[0];
String city = arr[3];
String country = arr[4];
String year = arr[6];
int noOfYears =2020 - (Integer.parseInt(year));
您已经对消息包含的内容进行了假设,而不是花时间来确保消息是否包含您所想的内容
所以,当消息为q时,数组将只包含一个元素,所以只要您执行字符串city=arr[3];您有一个数组索引超出范围的问题
一个简单的解决方案可能是在拆分之前检查消息是否等于q,但更好的解决方案是检查数组中的元素数
if (arr.length == 7) {
// Process the result
} else if (!"q".equals(message)) {
// Invalid input
}
此外,如前所述,您应该在循环外创建一次扫描仪,而不是将其关闭-因为您还将终止不朽的系统输入流,这也不是很好,这可能是您错误的真正原因您正在循环内关闭扫描仪,这是一个灾难的配方。使用完后,在循环外部关闭它it@Hovercraft这是一个问题:P@mad是的,我的错。我在打电话,无法重新打开it@HovercraftFullOfEels我会对所有其他问题发表评论,但这不是很具有指示性