2016-02-27 1 views
-1

Итак, привет, ребята. Прошу прощения, если на этот вопрос был дан ответ, но я ничего не нашел по моему вопросу.Как добавить строку (слово) в String [] array? Java, input

Представьте, что есть парень, который вводит свое имя в консоль, и система ищет свое имя в массиве «имена». Если его имя находится в массиве, система напечатает, что да, и отправьте его в ФБР, ха-ха. Но если в массиве нет его имени, система печатает, что Нет введенного имени, и тогда необходимо добавить введенное имя в массив. Для базы FBI шире) Вот мой код, и я работаю, если в массиве введено имя. Но это показывает исключение, нет имени.

Спасибо за помощь!)

import java.util.Arrays; 

import java.util.List; 
import java.util.Scanner; 

public class FBI { 
    String[] names = {"Вася", "Денис", "Петя", "Анатолий", "Евгений", "Саша", "Дима"}; 
    String s; 
    Scanner scn = new Scanner(System.in); 
    List<String> list = Arrays.asList(names); 



    void Ss(String s2){ 
     System.out.println("Введите имя:"); 
     s2 = scn.nextLine();  
     s = s2; 
    } 

    public void IsThereIn(){ 
     if(list.contains(s)){ 
      System.out.println("Есть такой в базе!"); 
      FBI fb = new FBI(); 
      fb.SendToFBI(); 
      System.out.println("DONE!"); 
     }else{ 
      System.out.println("Такого нет!"); 
      list.add(s); 

     } 

    } 
    public void SendToFBI(){ 
     System.out.println("Sending to FBI"); 
     for(int i = 1;i <=5;i++){ 
      System.out.println("На счёт " + i); 
     } 
    } 


} 
+0

Другое хорошее объяснение: HTTP : //stackoverflow.com/a/1624163/1393766 – Pshemo

ответ

1

Arrays.asList создает Listвид массива. Единственный способ изменить содержание этого списка без получения исключения - это использовать метод set (или какой-либо другой метод, который просто заменяет элементы (элементы)). Вы не можете увеличить размер списка.

Если вы хотите список, который позволяет добавлять новые элементы, вы должны использовать ArrayList:

List<String> list = new ArrayList<>(Arrays.asList(names)); 

Массивы не поддерживают изменения размера (см Java dynamic array sizes?): Если вам нужно «изменить» длина массива, вам необходимо заменить его на новый, что может быть сделано с этим кодом:

names = list.toArray(new String[list.size()]); 
+0

Thank's. Это полезно, и теперь код не показывает никаких исключений, но длина массива все равно 7. Где добавлена ​​строка? Я думал, что мой массив получит новую строку, а длина будет больше. Если при запуске длина массива равна 7, это должно быть 8? Нет? –

+0

@LameLane Вы не можете изменять размеры массивов (что также является причиной того, что операция 'add' не поддерживается в списке, возвращаемом' Arrays.asList'). Вместо этого я использовал бы «Список» везде, но я добавил код для создания нового массива, содержащего элементы в «List». – fabian

+0

Спасибо, ты помог мне с советом;) –

1

это не представляется возможным добавить значения в ArrayList, созданный USIN г Arrays.asList(array)

Нажмите на ссылку, чтобы увидеть исходный код

List<String> list = Arrays.asList(names); 

, что вы можете сделать, это сделать новую копию ArrayList и их все

т.е.

List<String> list= new ArrayList<String>(list); 
+0

Зачем голосовать? – Pragnani

+2

Я проигнорировал его раньше, потому что причина «у него нет методов добавления» была просто неправильной. У этого есть эти методы, но поскольку массивы не могут быть изменены, это не поддерживает их. Я раньше не оставлял комментариев, потому что сначала искал правильный дубликат (извините за задержку). – Pshemo

+1

@Pshemo Я хочу добавить что-то вроде 'У него нет добавлений методов реализации ', но я пропустил. Также означают, что они не обеспечивали реализацию, потому что массивы не изменяются. – Pragnani

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

  • Нет связанных вопросов^_^