如何获得阵列中的输出值以进一步处理输出
我试图获取数字的因子并找到该数字的因子之间的最小距离。我试图通过2个步骤完成这个过程,首先找到这些因素,然后把这些数字找出它们之间的最小距离。 我用这个来找到一些如何获得阵列中的输出值以进一步处理输出
Scanner input = new Scanner(System.in);
int n;
System.out.println("Enter a number");
n = input.nextInt();
if(n <= 0){
System.out.println("cant input a number less than or equal to zero");
input.close();
return;
}
System.out.println("factors of " + "" + n+ "" + " are");
for(int i = 1; i <= n; i++){
if(n % i == 0){
System.out.println(i);
}
}
我怎么能再次得到这些输出,发现它们 之间的最小距离,我想这个逻辑
int[] a = new int[] {i};
Arrays.sort(a);
int minDiff = a[1]-a[0];
for (int i = 2 ; i != a.length ; i++) {
minDiff = Math.min(minDiff, a[i]-a[i-1]);
}
System.out.println(minDiff);
我的问题是的阶乘,我不不知道如何将这些输出存储在数组中以供进一步计算。
您应该创建一个List
(可调整大小的数组)并向其添加因子。然后你可以在列表中应用你的逻辑。
获取一看:
List<Integer> factors = new ArrayList<>(); // create an empty ArrayList
for(int i = 1; i <= n; i++){
if(n % i == 0){
System.out.println(i);
factors.add(i); // add i to it.
}
}
// we can hopefully assume that n have at least two factors (if n > 1, that is)
// no need to sort, insertion order is kept
int minDiff = factors.get(1) - factors.get(0);
for (int i = 2 ; i < factors.size() ; i++) {
minDiff = Math.min(minDiff, factors.get(i)-factors.get(i-1));
}
System.out.println(minDiff);
首先,你需要一个ArrayList
存储的n
的因素。你可以做的
List<Integer> factors = new ArrayList<>();
for(int i = 1; i <= n; i++){
if(n % i == 0){
factors.add(i);
}
}
线的东西现在,寻找最小的区别,你可以遍历所有的ArrayList
,像
int minDiff = factors.get(1)-factors.get(0);
for (int i = 2 ; i < factors.size(); i++) {
minDiff = Math.min(minDiff,factors.get(i)-factors.get(i-1));
}
而且,没有必要排序的阵列,因为这些因素已经被排序。
这工作就像一个魅力:) –
如何获得此函数签名int minDistance(int n)? –
@SusHill是否会返回一些东西?如果是的话,那么把所有的代码放在里面,最后做一个'return minDiff'。 –
你说“*我试图得到一个数的阶乘*”,你的意思是因素,不是吗? –
@Chandler Bing yea对于混淆抱歉。我会纠正我的问题。 –