我需要解决一个如下所示的练习:
-1
; -1
后,系统会显示一条消息,其中显示已添加的号码及其count
所以,如果他输入:1 8 6 9 -1
结果将是:
输入的数字为:1 8 6 9 -1
并且计数为5
。
我试着编写代码:
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class exercice
{
public static void main (String[] args) throws java.lang.Exception
{
readNumbers();
}
//No parameters inside: just readNubers()
public static void readNumbers()
{
int[] num = new int[n];
int x = 0;
while(x!=-1)
{
for(int i=0; i<n; i++)
{
System.out.println("Enter a number");
Scanner scan = new Scanner(System.out);
x = scan.nextInt();
num[i]=x;
}
}
for(int j = 0; j<num.length; i++)
{
System.out.println(num[i]);
System.out.println("The total of entered numbers is: "+num.length);
}
}
}
但是,我仍然坚持如何定义变量数组长度,而不使用ArrayList。所以我需要像上面的代码一样解决它。
在课程中,我们有一个例子,我们可以定义一个长度未知的数组,如下所示:
method_name(int ...a)
但无法知道如何使用它。
答案 0 :(得分:2)
在课程中,我们有一个例子,我们可以定义一个长度未知的数组,如下所示:
method_name(int ... a)但不知道如何使用它。
这不适用于此:即使在这种情况下,实际的数组大小也必须在编译时知道。当你调用一个varargs方法时,你总是知道数组的实际大小(或者你传入一个在其他地方调整大小的数组对象)。
如果你不能使用ArrayList
,你必须重新发明它:你必须手动创建一个更大的数组,然后将小数组的内容复制到更大的数组中。这就是ArrayList内部的作用。 (或者,您可以从一个巨大的阵列开始,只填充其中的一部分,然后选择您需要的部分。)
所有Java数组的大小都在创建时固定。
答案 1 :(得分:0)
如果您无法使用列表,您的选项是:
或
或者,当然,您可以构建列出数字的字符串,而不是将它们存储在数组中。
答案 2 :(得分:0)
我没有读过那些说过&#34;我需要解决一个练习的部分&#34;并为提供完整的解决方案道歉。我在开头添加一些提示,最后添加一个扰流警报。
您可以将数字存储在String变量中,以空格分隔。然后,您可以将其拆分为String数组。最后,设置一个int数组大小以匹配String数组并将数据解析为它。
以下是将数字存储到int数组中的代码:
Scanner input = new Scanner(System.in);
System.out.print("Please enter the numbers: ");
int nextNum = 0;
String nums = "";
do{
nextNum = input.nextInt();
nums += nextNum + " ";
}while(nextNum != -1);
String[] nums2 = nums.split(" ");
int[] x = new int[nums2.length];
for(int i = 0; i < nums2.length; i++)
x[i] = Integer.parseInt(nums2[i]);
现在您有一个数组(x),其中包含用户输入的所有数字。会发生什么是将数字添加到字符串中,并用空格分隔。然后,在用户输入-1之后,String将转换为String数组。最后,它从String数组的每个元素解析int,并将其放在自己的int数组元素中。
希望这有帮助!