我正在尝试允许用户输入来自用户的多个输入,其中包含char和整数。 像这样的输入:A 26 16 34 9 并将每个添加到数组的int输出。 我以为我可以将第一个输入作为字符,然后将其余输入作为字符串读取,然后我将其分离并放入数组中。 我不是编码新手,而是Java新手。我一直在做c ++,所以语法有点不同。 到目前为止,这是我的工作,我还没有为整数设置数组。
import java.util.Scanner;
public class Program0 {
public static void main(String[] args) {
int firstNumber;
Scanner reader = new Scanner(System.in);
System.out.println("'A' to enter a number. 'Q' to quit");
int n = reader.nextInt();
if (n=='A') {
//if array is full System.out.println("The list is full!");
//else
System.out.println("Integer " + " " + "has been added to the list");
}
else if (n=='Q') {
System.out.println("List of integers: ");
System.out.println("Average of all integers in the list: ");
}
else{
System.out.println("Invalid Action");
}
reader.close();
}
}
答案 0 :(得分:0)
您能否指定更好的输入方式?从您的问题来看,如果我理解的很好,用户只需键入“ A”,然后键入一个用空格分隔的数字列表。因此,我只需要阅读下一行,将其分成多个单词(用空格隔开),然后检查第一个单词是否为字母“ A”。在这里:
import java.util.Scanner;
public class Program0 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("'A' to enter a number. 'Q' to quit");
String line = reader.nextLine();
String[] words = line.split(" ");
if (words.length > 0 && words[0].equals("A")) {
//if array is full System.out.println("The list is full!");
// => I don't understand this part
//else
for(int i = 1; i<words.length; i++){
int integer = Integer.parseInt(words[i]);
System.out.println("Integer " + integer + " has been added to the list");
//do your stuff here
}
}
else if (words.length > 0 && words[0].equals("Q")) {
System.out.println("List of integers: ");
System.out.println("Average of all integers in the list: ");
}
else{
System.out.println("Invalid Action");
}
reader.close();
}
}
请注意,在解决方案中,您从扫描仪读取了下一个整数,然后尝试将其与字符'A'
进行比较。由于A
不是整数,因此无法使用。如果您真的想从扫描仪中获取第一个字符,可以执行以下操作:
String line = reader.nextLine();
if(line.length() > 0){
char firstChar = line.charAt(0);
//do your stuff here
}
答案 1 :(得分:0)
字符不是整数。您无法读取int来期望类似“ A”的内容。您可以读取String并采用其第一个字符。扫描程序没有提供一种方便的方法来读取下一个String并期望它只有一个字符长。您需要自己处理。
但是考虑到您事先不知道将要读取多少个数字,那么阅读整行并完全解释该行的解决方案是更好的选择。这意味着您不能使用nextInt(),nextDouble(),next()或nextWhateverElse()。
您需要nextLine(),它将以String的形式显示整行。
然后,您可以分割()结果,并检查第一个是否为一个字符长。然后,您可以将所有其他解析为int。
答案 2 :(得分:0)
我不会立即回想起如何用Java编写代码-已经有一段时间了-但是我要做的是先用空格分隔字符串,然后尝试 ParseInt
。
如果字符串不是有效的整数,则此方法将throw
引发异常,您可以捕获该异常。所以:
如果转到下一条语句,则不会发生异常,因此该值是整数。
相反,如果您发现自己处于异常处理程序中(已捕获[仅...]预期的异常类型,则该值为字符串。
当然,不要“捕获”您期望的NumberFormatException
以外的任何异常类型。
顺便说一句,以这种方式使用异常是完全正常的。让Java的运行时引擎来决定是否为整数。