Java 将数组中的重复元素更改为0,将其他元素更改为1
我想将数组中的每个元素与其他元素进行比较。如果两个元素相等,则一个应更改为1,另一个应更改为0 我做错了什么Java 将数组中的重复元素更改为0,将其他元素更改为1,java,arrays,algorithm,Java,Arrays,Algorithm,我想将数组中的每个元素与其他元素进行比较。如果两个元素相等,则一个应更改为1,另一个应更改为0 我做错了什么 package org.kodejava.example.io; import java.util.Arrays; public class Root { public static void main(String[] args) { System.out.println(Arrays.toString(arr())); } public
package org.kodejava.example.io;
import java.util.Arrays;
public class Root {
public static void main(String[] args) {
System.out.println(Arrays.toString(arr()));
}
public static int[] arr() {
int[] arc ={1,2,5,76,8,0,6,5,1,4,8,4,6,};
for (int i=0;i<13;i++){
for (int j=1;j<13;j++){
if (arc[i] == arc[j] ) {
arc[i]=1;
arc[j]=0;
}
else {
arc[i]=1;
}
}
}
return arc;
}
}
package org.kodejava.example.io;
导入java.util.array;
公共类根{
公共静态void main(字符串[]args){
System.out.println(Arrays.toString(arr());
}
公共静态int[]arr(){
int[]弧={1,2,5,76,8,0,6,5,1,4,8,4,6,};
对于(int i=0;i,您可能需要以下函数:
public static int[] arr() {
int[] arc ={1,2,5,76,8,0,6,5,1,4,8,4,6};
for (int i=0;i<arc.length;i++){
for (int j=i+1;j<arc.length;j++){
if (arc[i] == arc[j] && arc[i] != 0) {
arc[i]=1;
arc[j]=0;
}
}
if(arc[i] != 0) {
arc[i] = 1;
}
}
return arc;
}
公共静态int[]arr(){
int[]弧={1,1,4,6};
int[]结果=新的int[弧长];
对于(int i=0;i
“不能正常工作”是毫无用处的。告诉我们它是如何工作的。你能解释一下你想要达到的目标以及为什么结果不符合你的期望吗?@houman001实际上这个问题不是重复的,因为它不是关于如何打印数组的内容,而是关于为什么这个内容不正确(无论OP是什么意思)@houman001它们是不同的问题。除非你解释一下计算过程应该是什么,否则这个问题无法回答。为什么结果会是这样?这是什么意思?对不起,你知道,我做不到。我因为这个问题名声太坏了;(这个答案不正确。第六个元素应该是1
not0
。你是对的。在数组不包含零的条件下工作。或者使用-1 not zero进行操作,然后将-1s更改为0s。@KlasLindbäck我更新了我的答案,这样我的函数现在就满足了第一个0最后应该是1的条件。还有一些选项。)亚胺化。
import java.util.Arrays;
public class Root {
public static void main(String[] args) {
int[] arc = {1,2,5,76,8,0,6,5,1,4,8,4,6};
System.out.println(Arrays.toString(arr(arc)));
}
public static int[] arr(int[] arc) {
int indexOfTheFirstZero = -1;
// find the first 0 and store its index
for (int i=0;i<arc.length;i++){
if(arc[i] == 0) {
indexOfTheFirstZero = i;
break;
}
}
// main loop
for (int i=0;i<arc.length;i++){
// need work only if item is not 0
if(arc[i] != 0) {
for (int j=i+1;j<arc.length;j++){
if (arc[i] == arc[j]) {
arc[j] = 0;
}
}
arc[i]=1;
}
}
// change first 0 (if it exists) to 1
if(indexOfTheFirstZero != -1) {
arc[indexOfTheFirstZero] = 1;
}
return arc;
}
}
public static int[] arr() {
int[] arc = {1, 1, 4, 6};
int[] result = new int[arc.length];
for (int i = 0; i < arc.length; i++) { // Changed 13 to arc.length
result[i] = 1; // Suppose not duplicate until proven wrong
for (int j = 0; j < i; j++) { // first element is 0, only need to check up to current elememt
if (arc[i] == arc[j]) {
result[i] = 0; // Found a duplicate. Element i should be zero
// arc[j]=0; No need to change arc[j].
break; // No need to check the rest of the array
// } else { // The else is now unnecessary
}
}
}
return result;
}