Java 可变数组长度内部方法
我需要解决一个练习,如下所示:Java 可变数组长度内部方法,java,arrays,Java,Arrays,我需要解决一个练习,如下所示: 用户开始向数组中添加整数 当他想停止添加数字时,他应该键入-1 键入-1后,将显示一条消息,其中显示添加的数字,以及这些数字的计数 所以如果他输入:1869-1 结果将是: 输入的数字为:1869-1,计数为5 我试着写代码: import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is pu
-1
李>
-1
后,将显示一条消息,其中显示添加的数字,以及这些数字的计数
1869-1
结果将是:
输入的数字为:1869-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);
}
}
}
import java.util.*;
导入java.lang.*;
导入java.io.*;
/*只有当类是公共的时,类的名称才必须是“Main”*/
课堂练习
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
readNumbers();
}
//里面没有参数:只有readNubers()
公共静态void readNumbers()
{
int[]num=新的int[n];
int x=0;
而(x!=-1)
{
对于(int i=0;i
在我们的课程中,我们有一个例子,我们可以定义一个长度未知的数组,如下所示:
方法名(int…a),但不知道如何使用它
这在这里是不适用的:即使在这种情况下,实际数组大小也必须在编译时知道。当调用varargs方法时,您总是知道数组的实际大小(或者您正在传入一个数组对象,该数组对象的大小在其他地方)
如果你不能使用ArrayList
,你必须重新设计它:你必须手动创建一个较大的数组,然后将小数组的内容复制到较大的数组中。这就是ArrayList内部所做的。(或者,你可以从一个大数组开始,只填充其中的一部分,然后选择你需要的部分。)
所有Java数组在创建时都有固定的大小
在我们的课程中,我们有一个例子,我们可以定义一个长度未知的数组,如下所示:
方法名(int…a),但不知道如何使用它
这在这里是不适用的:即使在这种情况下,实际数组大小也必须在编译时知道。当调用varargs方法时,您总是知道数组的实际大小(或者您正在传入一个数组对象,该数组对象的大小在其他地方)
如果你不能使用ArrayList
,你必须重新设计它:你必须手动创建一个较大的数组,然后将小数组的内容复制到较大的数组中。这就是ArrayList内部所做的。(或者,你可以从一个大数组开始,只填充其中的一部分,然后选择你需要的部分。)
所有Java数组在创建时都有固定的大小。如果不能使用列表,您可以选择:
定义一个非常大的数组,并根据需要填充尽可能多的数组
或
当数组已满时,创建一个新的数组并跨多个数组复制内容
当然,您也可以在运行时构造列出数字的字符串,而不将它们存储在数组中。如果您不能使用列表,您可以选择:
定义一个非常大的数组,并根据需要填充尽可能多的数组
或
当数组已满时,创建一个新的数组并跨多个数组复制内容
当然,您也可以在运行时构造一个列有数字的字符串,而不将它们存储在数组中。我没有阅读“我需要解决一个练习”的部分,也没有为给出完整的解决方案而道歉。我在开头添加了一些提示,在结尾添加了一个扰流板警报
您可以将数字存储在字符串变量中,用空格分隔。然后,您可以将其拆分为字符串数组。最后,设置int数组大小以匹配字符串数组,并将数据解析为该数组
完整解决方案:
以下是将数字存储到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]);
扫描仪输入=新扫描仪(System.in);
系统输出打印(“请输入数字:”);
int nextNum=0;
字符串nums=“”;
做{
nextNum=input.nextInt();
nums+=nextNum+“”;
}而(nextNum!=-1);
字符串[]nums2=nums.split(“”);
int[]x=新的int[nums2.length];
for(int i=0;i
现在您有了一个包含用户输入的所有数字的数组(x)。所发生的事情是将数字添加到字符串中,并用空格分隔。然后,在用户输入-1后,字符串转换为字符串数组。最后,它从字符串数组的每个元素解析int,并将其放入自己的int数组元素中
希望这有帮助!我没有读到“我需要解决一个练习”的部分,也没有为给出完整的解决方案而道歉。我在开头添加了一些提示,在结尾添加了一个剧透警告
您可以将数字存储在字符串变量中,用空格分隔。然后,您可以将其拆分为字符串数组。最后,设置int数组大小以匹配字符串数组,并将数据解析为该数组
完整解决方案:
以下是将数字存储到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]);
扫描仪输入=新扫描仪(System.in);
系统输出打印(“请输入数字:”);
int nextNum=0;
字符串nums=“”;
做{
nextNum=input.nextInt();
nums+=nextNum+“”;
}而(nextNum!=-1);
字符串[]nums2=nums.split(“”);
int[]x=新的int[nums2.length];
for(int i=0;i
现在您有了一个包含用户输入的所有数字的数组(x)。所发生的事情是将数字添加到字符串中,并用空格分隔。然后,在用户输入-1后,字符串转换为字符串数组。最后,它从字符串数组的每个元素解析int,并将其放入自己的int数组元素中
希望这有帮助!您不能定义可变长度数组。您必须猜测数组的大小,然后根据需要制作一个调整大小的数组(并复制)。正确的方法是只使用ArrayList
,它会自动为您处理所有这些。我有一个递归的想法