我有一个附加程序:
import java.io.*;
public class sum
{
int num;
int sum = 0;
int result;
public void findsum() throws IOException
{
BufferedReader Br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("enter the value for N : ");
num = Integer.parseInt(Br.readLine());
int nums[] = new int[num+1];
for(int i = 1; i <= num; i++)
{
System.out.print("\n Enter " + i + " number: ");
nums[i]= Integer.parseInt(Br.readLine());
sum = sum + nums[i];
}
System.out.print("\n Sum is : " + sum );
}
public static void main(String args[]) throws IOException
{
sum sm = new sum();
sm.findsum();
}
}
输出:
它需要N Integer
个值作为用户的输入,并返回这N个数字的总和。
但我想如果任何一个数字等于另一个数字,它会自动忽略它们。
答案 0 :(得分:0)
从你的问题
我希望如果任何一个数字等于另一个数字 另外自动忽略它们
如果您在此使用Set
,这将很容易Set<Integer> numbers=new HashSet<>();
for(int i = 1;i<=num;i++){
System.out.print("\n Enter " + i + " number : ");
numbers.add(Integer.parseInt(Br.readLine())); // add to set
}
现在不考虑重复值。然后只需在Set
。
答案 1 :(得分:0)
只需验证阵列中的输入数字是否还没有。
使用此更改for循环,它将正常工作:
for (int i = 1; i <= num; i++) {
System.out.print("\n Enter the " + i + " number : ");
int x = Integer.parseInt(Br.readLine());
int j=0;
while(j<num && nums[j]!=x) {
j++;
}
if(j>=num) {
nums[i] = x;
}
sum = sum + nums[i];
}
答案 2 :(得分:0)
有几个问题:
你的for循环从1开始,你使用的数组的索引是nums [i],这意味着你的数组将从1开始。数组从第0个索引开始,因此当你引用索引时使用i-1为你的数组循环或使用从0到n-1的循环。
如果您希望坚持使用Array实现,那么在每个for循环中,在执行求和之前,您需要迭代每个早期元素以检查元素是否已经存在于数组中:
numberFound = false;
for (int j = 1; j < i; j++) {
if (nums[j - 1] == nums[i - 1]) {
numberFound = true;
System.out.println("Duplicate number " + nums[i - 1]
+ " will be ignored");
break;
}
}
if (!numberFound) {
sum = sum + nums[i - 1];
}
答案 3 :(得分:0)
使用Set删除冗余
Set<Integer> num = new HashSet<Integer>();
num.add(123);
num.add(123);
num.add(1);
num.add(1);
Integer sum=0;
for(Object a: num.toArray()){
sum+=(Integer)a;
}
System.out.println(sum); //124
答案 4 :(得分:0)
使用 Java 8 时,您可以让Stream API完成工作:
来自JavaDoc:
返回由此流的不同元素(根据Object.equals(Object))组成的流。
使用方法:
final int[] nums = new int[] {1, 2, 2, 3, 4, 4, 4};
final int sum = IntStream.of(nums)
.distinct()
.sum();
System.out.println(sum); // prints 10 (1 + 2 + 3 + 4);