您可以将数组列表添加到 java 中的变量吗
Can you add an array list to a variable in java
我有以下代码:
public static void main (String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("\nLab1a\n");
final int MAX = 100;
boolean primes[];
primes = new boolean[MAX];
ArrayList<Integer>PrimeFactor = new ArrayList<Integer>();
for (int i = 1; i < MAX + 1; i++)
{
PrimeFactor.add(i);
}
System.out.println("Computing Prime Numbers");
System.out.println();
System.out.println("Primes Between 1 and 100");
System.out.println(PrimeFactor);
}
public static void CompositeNumbers(ArrayList<Integer> PrimeFactor)
{
for (int i = 0; i < PrimeFactor.size(); i++)
{
if (isPrime(PrimeFactor.get(i)))
{ PrimeFactor.remove(i);}
}
}
public static boolean isPrime(int n)
{
for (int i = 2; i < n; i++)
{
if (n%i == 0)
return false;
}
return true;
}
}
所以我想做的是输出从数字 1 到 100 的质数。问题是每当我输出时,我只得到数字 1 到 100。我该如何解决这个问题?我看到问题是因为 PrimeFactor 被用于两种不同的事情,我不确定。所以请帮忙。
你应该打电话给
CompositeNumbers(PrimeFactor);
在打印 PrimeFactor 之前的主要内容
public static void main (String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("\nLab1a\n");
final int MAX = 100;
boolean primes[];
primes = new boolean[MAX];
ArrayList<Integer>PrimeFactor = new ArrayList<Integer>();
for (int i = 1; i < MAX + 1; i++)
{
PrimeFactor.add(i);
}
CompositeNumbers(PrimeFactor);
System.out.println("Computing Prime Numbers");
System.out.println();
System.out.println("Primes Between 1 and 100");
System.out.println(PrimeFactor);
}
public static void CompositeNumbers(ArrayList<Integer> PrimeFactor)
{
for (int i = 0; i < PrimeFactor.size(); i++)
{
if (!isPrime(PrimeFactor.get(i)))
{
PrimeFactor.remove(i);
}
}
}
public static boolean isPrime(int n)
{
if(n==1)
{
return true;
}
for (int i = 2; i < n+1/2; i++)
{
if (n%i == 0)
{
return false;
}
}
return true;
}
除了Dev先生的代码,我还要补充一下
public static void CompositeNumbers(ArrayList<Integer> PrimeFactor)
{
for (int i = 0; i < PrimeFactor.size(); i++)
{
if (!isPrime(PrimeFactor.get(i)))
{
PrimeFactor.remove(i);
i--; //<--
}
}
}
删除项目后数组列表将缩小。一旦数组调整,此减量将重新检查 i 处的元素。
答案。
public static void main (String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("\nLab1a\n");
final int MAX = 100;
boolean primes[];
primes = new boolean[MAX];
ArrayList<Integer>PrimeFactor = new ArrayList<Integer>();
for (int i = 2; i < MAX + 1 ; i++)
{
PrimeFactor.add(i);
}
CompositeNumbers(PrimeFactor);
System.out.println("COMPUTING RIME NUMBERS");
System.out.println();
System.out.println("PRIMES BETWEEN 1 AND 100");
CompositeNumbers(PrimeFactor);
System.out.println(PrimeFactor);
}
public static void CompositeNumbers(ArrayList<Integer> PrimeFactor)
{
for (int i = 0; i < PrimeFactor.size(); i++)
{
if (!isPrime(PrimeFactor.get(i)))
{
PrimeFactor.remove(i);
i--;
}
}
}
public static boolean isPrime(int n)
{
if(n==1)
{
return true;
}
for (int i = 2; i < n +1/2; i++)
{
if (n%i == 0)
{
return false;
}
}
return true;
}
}
我有以下代码:
public static void main (String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("\nLab1a\n");
final int MAX = 100;
boolean primes[];
primes = new boolean[MAX];
ArrayList<Integer>PrimeFactor = new ArrayList<Integer>();
for (int i = 1; i < MAX + 1; i++)
{
PrimeFactor.add(i);
}
System.out.println("Computing Prime Numbers");
System.out.println();
System.out.println("Primes Between 1 and 100");
System.out.println(PrimeFactor);
}
public static void CompositeNumbers(ArrayList<Integer> PrimeFactor)
{
for (int i = 0; i < PrimeFactor.size(); i++)
{
if (isPrime(PrimeFactor.get(i)))
{ PrimeFactor.remove(i);}
}
}
public static boolean isPrime(int n)
{
for (int i = 2; i < n; i++)
{
if (n%i == 0)
return false;
}
return true;
}
}
所以我想做的是输出从数字 1 到 100 的质数。问题是每当我输出时,我只得到数字 1 到 100。我该如何解决这个问题?我看到问题是因为 PrimeFactor 被用于两种不同的事情,我不确定。所以请帮忙。
你应该打电话给
CompositeNumbers(PrimeFactor);
在打印 PrimeFactor 之前的主要内容
public static void main (String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("\nLab1a\n");
final int MAX = 100;
boolean primes[];
primes = new boolean[MAX];
ArrayList<Integer>PrimeFactor = new ArrayList<Integer>();
for (int i = 1; i < MAX + 1; i++)
{
PrimeFactor.add(i);
}
CompositeNumbers(PrimeFactor);
System.out.println("Computing Prime Numbers");
System.out.println();
System.out.println("Primes Between 1 and 100");
System.out.println(PrimeFactor);
}
public static void CompositeNumbers(ArrayList<Integer> PrimeFactor)
{
for (int i = 0; i < PrimeFactor.size(); i++)
{
if (!isPrime(PrimeFactor.get(i)))
{
PrimeFactor.remove(i);
}
}
}
public static boolean isPrime(int n)
{
if(n==1)
{
return true;
}
for (int i = 2; i < n+1/2; i++)
{
if (n%i == 0)
{
return false;
}
}
return true;
}
除了Dev先生的代码,我还要补充一下
public static void CompositeNumbers(ArrayList<Integer> PrimeFactor)
{
for (int i = 0; i < PrimeFactor.size(); i++)
{
if (!isPrime(PrimeFactor.get(i)))
{
PrimeFactor.remove(i);
i--; //<--
}
}
}
删除项目后数组列表将缩小。一旦数组调整,此减量将重新检查 i 处的元素。
答案。
public static void main (String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("\nLab1a\n");
final int MAX = 100;
boolean primes[];
primes = new boolean[MAX];
ArrayList<Integer>PrimeFactor = new ArrayList<Integer>();
for (int i = 2; i < MAX + 1 ; i++)
{
PrimeFactor.add(i);
}
CompositeNumbers(PrimeFactor);
System.out.println("COMPUTING RIME NUMBERS");
System.out.println();
System.out.println("PRIMES BETWEEN 1 AND 100");
CompositeNumbers(PrimeFactor);
System.out.println(PrimeFactor);
}
public static void CompositeNumbers(ArrayList<Integer> PrimeFactor)
{
for (int i = 0; i < PrimeFactor.size(); i++)
{
if (!isPrime(PrimeFactor.get(i)))
{
PrimeFactor.remove(i);
i--;
}
}
}
public static boolean isPrime(int n)
{
if(n==1)
{
return true;
}
for (int i = 2; i < n +1/2; i++)
{
if (n%i == 0)
{
return false;
}
}
return true;
}
}