所以这就是我想要做的。有用户输入数字,将它们存储在一个数组中,然后在一行上打印所有这些数字。我也必须使用方法/功能。我认为到目前为止我做得很好,它在日食中没有显示任何错误。我坚持的是将他们的输入存储到数组中。我希望他们一次输入一个数字,直到他们满意并键入'退出'。我还没有读过如何将数据存储在数组中,尽管环顾四周,尤其是逐步存储多个内容。到目前为止,这是我的代码,并提前感谢您的帮助!
import java.util.Scanner;
public class intarray {
public static void main(String[] args) {
System.out.println("Enter a number then hit enter. You may then enter another number or end by typing quit.");
String x;
Scanner input = new Scanner(System.in);
while (true) {
x=input.next();
if (x.equalsIgnoreCase("quit")) {break;}
if (x.equals(null)) throw new Error("You entered nothing. Try again.");
int stringLength = x.trim().length();
if (stringLength == 0) throw new Error("Seems you only entered spaces. Try again.");
isNum(x);
int goingintoarray = Integer.parseInt(x);
int array[];
}
}
public static String isNum(String t) {
int user=Integer.parseInt(t);
String convertback = Integer.toString(user);
return convertback;
}
}
答案 0 :(得分:1)
由于你不知道有多少个元素会有一个数组是一个坏主意,因为你必须经常调整它的大小,因为新元素出现(复制数组很昂贵!)或者在开始时实例化一个足够大的数组(这是一种浪费,仍然不能保护你100%不必最终调整它)。
相反,使用Java的List(最好是LinkedList)听起来是个好主意,因为你可以动态添加元素而不需要调整数据结构的大小。
List<Integer> numbers = new LinkedList<>();
while(true) {
// something
numbers.add(goingintoarray);
// something
}
小心其他实现 - 例如ArrayList使用数组(d'uh ;-))来存储元素,这样你就会遇到同样的问题,但实现时会为你调整大小调整部分。 / p>
@Edit:通过约定,Java中的类是使用CamelCase编写的,以大写字母开头。
答案 1 :(得分:0)
ArrayList<Integer> inputs = new ArrayList<Integer>();
while (true) {
Scanner input = new Scanner(System.in);
x=input.next();
if (x.equalsIgnoreCase("quit")) {break;}
if (x.equals(null)) throw new Error("You entered nothing. Try again.");
int stringLength = x.trim().length();
if (stringLength == 0) throw new Error("Seems you only entered spaces. Try again.");
inputs.add(Integer.parseInt(x));
}
你不需要isNum方法,因为如果x的输入输入错误,它会在这里给出相同的异常。
答案 2 :(得分:0)
import java.util.Scanner;
公共课intarray {
public static int initSize = 5;
public static void main(String[] args) {
System.out.println("Enter a number then hit enter. You may then enter another number or end by typing quit.");
int array[] = new int[initSize];
int pos = 0;
int maxSize = initSize;
String x = null;
Scanner input = new Scanner(System.in);
while (true) {
x = input.next();
if (x.equalsIgnoreCase("quit")) {
break;
}
//input empty string, java io can filter. So , x impossible "null" or null.
//if (x.equals(null))
// throw new Error("You entered nothing. Try again.");
int stringLength = x.trim().length();
if (stringLength == 0)
throw new Error("Seems you only entered spaces. Try again.");
Integer numX = isNum(x);
// if the array is full, extend it
if(pos == maxSize){
int[] newArray = new int[2 * maxSize];
System.arraycopy(array, 0, newArray, 0, maxSize);
array = newArray;
maxSize = array.length;
}
if(null == numX)
System.out.println(x + " isn't a number."); //choose notify or throw error
else
array[pos++] = numX;
}
printArray(array, pos);
}
public static Integer isNum(String t) {
try {
return Integer.parseInt(t);
} catch (NumberFormatException e) {
return null;
}
}
public static void printArray(int[] array, int pos) {
if(null == array || array.length == 0 || pos <= 0)
return ;
for(int i = 0 ; i < pos; i++)
System.out.print(array[i] + " ");
}
}