2015-02-09 2 views
-3

Я пытаюсь найти первый раз, когда определенное значение появляется в массиве и увеличивает его. Затем введите имя в массив строк в том же месте.Как найти определенное значение в массиве

Например, у меня есть array = {2, 1, 0, 0} и string array = {null, null, null, null}.

То, что я пытаюсь сделать, это проверить массив на нуль, и если он найден, увеличьте его значение на 1 и введите имя в соответствующее поле строки. поэтому, если нуль находится в третьем месте в массиве int, пользователь может ввести имя в третье место в массиве строк.

Если я снова вызову метод, он будет использовать следующий ноль. Любой совет, как я мог бы это сделать, был бы оценен!

+6

ничего не оставалось, чем реализовать свое описание ... Вы попробовали это? – BeyelerStudios

+3

Что вы пробовали? Задайте конкретный вопрос. Не предполагайте, что люди будут решать ваши задания. – SklogW

ответ

2

Вы можете попробовать: java.util.Arrays.asList(theArray).indexOf(0) Таким образом, вы можете найти положение 0, а затем использовать его для вашей цели

+0

будет ли это работать, если есть несколько нулей? Я хочу найти первый – irradiatedcat

+1

Здесь, позвольте мне связать документацию для вас: http://docs.oracle.com/javase/7/docs/api/java/util/List.html#indexOf%28java.lang. Object% 29 –

+1

Протестируйте его с помощью массива образцов и посмотрите, что вы получите. Если вы получите массив позиций вместо одной позиции, возможно, вы можете попытаться извлечь первое значение из возвращенного массива позиций. Не уверен. Просто дайте ему настоящую попытку. –

2

Вы бы сделать это:

Scanner s = new Scanner(System.in); 
for (int i = 0; i <= array1.length; i++) { 
    if (array1[i] == 0) { 
     array1[i]++; 
     String str = s.nextLine(); 
     array2[i] = str; 
    } 
} 

или если вы хотите использовать JOptionPane вы замените линии Scanner на String str = JOptionPane.showInputDialog(null, "Enter A String");.

+0

Привет, хороший ответ. Я применил некоторые изменения форматирования (чтобы включить подсветку синтаксиса) и переместил создание экземпляра 'Scanner' из цикла for, поэтому он не будет воссоздаваться на каждой итерации. Вы можете отредактировать свой ответ, если вам не нравятся мои изменения. Приветствую. – Tom

1

Вы можете попробовать что-то вроде этого:

int index = 0; 
for(int i = 0; i < arrayNumbers.size; i++){ 
    if(arrayNumbers[i] == 0){ 
    index = i; 
    break; 
    } 
} 

arrayNames[index] = newName; 
0

Класс ниже создает два массива, как вы предоставили. Во время выполнения программа проверяет нули в целочисленном массиве array1. Если он находит нуль, он увеличивает его на единицу. Затем индекс этого элемента используется для изменения массива String array2. Во время исполнения вы решили, что это будет.

public class FindValue { 

private int[] array1 = { 2, 1, 0, 0 }; 
private String[] array2 = { null, null, null, null }; 



public void checkStuff() { 
    for (int i = 0; i < array1.length; i++) { 
     if (array1[i] == 0) { 
      array1[i]++; 
      System.out.println("Enter string: "); 
      Scanner s = new Scanner(System.in); 
      String inputstr = s.nextLine(); 
      array2[i] = inputstr; 

     } 

    } 

} 

public void getIntArray(){ 
    for (int i = 0; i < array1.length; i++) { 
     System.out.println(array1[i]); 
    } 
} 
public void getStrArray(){ 
    for (int i = 0; i < array2.length; i++) { 
     System.out.println(array2[i]); 
    } 
} 
public static void main(String[] args) { 
    FindValue here = new FindValue(); 

    here.checkStuff(); 
    here.getIntArray(); 
    here.getStrArray(); 

} 
} 
Смежные вопросы