2015-11-19 2 views
2

Я хочу, чтобы пользователь вводил строку в массив. Каков самый быстрый способ сделать это и проверить, не вписывается ли строка, которую они вменяют, какие-либо не-алфавитные символы? (Например, #, &, 8, [, 0) Большое спасибо!Как мне искать строку массива для символов, отличных от алфавита?

+3

Добро пожаловать в SO! Что вы подразумеваете под самым быстрым и почему это важно? – Kenney

ответ

1

Вы могли бы сделать это следующим образом:

int size = 1024; 
String[] strs = new String[size]; 
Scanner sc = new Scanner(System.in); 
for (int i=0; i<size; i++) { 
    String input = sc.next(); 
    if (input.matches("[A-Za-z]")) { 
     strs[i] = input; 
    } else { 
     strs[i] = ""; 
    } 
} 
sc.close(); 

Я надеюсь, что это помогает.

+1

Что делает sc.close(); делать? – babyguineapig11

+1

Он закрывает сканер после его использования. Поэтому, если вы закончили чтение, вы должны закрыть свой сканер. –

1

Вы можете использовать Scanner принимать на входе пользователя:

String alphabet = "abcdefghijklmnopqrstuvxyz"; 
int arraySize = 10; 
String[] charArray = new String[arraySize]; 
Scanner sc = new Scanner(System.in); 
for (int i=0; i<arraySize; i++) { 
    String input = sc.next(); 
    if (!alphabet.contains(input) { 
     charArray[i] = input; 
    } else { 
     charArray[i] = ""; 
    } 
} 
+0

Используйте капитал 'Scanner': Как в моем коде. 'Сканер sc = новый сканер (System.in);' – jiaweizhang

+0

. Разве ваш 'array' объявлен (и инициализирован) до того, как вы попытаетесь использовать' array.length'? – jiaweizhang

+0

Да, я уже инициализировал его. – babyguineapig11

1

Для начала, ваш вопрос довольно расплывчатый. Оператор вроде: «Я хочу, чтобы пользователь вводил строку в массив». Я думаю, что, скорее всего, это должно быть: «Я бы хотел, чтобы строковый ввод пользователя был помещен в массив». Обычно Пользователь вашего приложения не вводит строки в массив, это задача для выполнения вашего кода. Ожидается, что все ваши пользователи будут поставлять одну или несколько строк, что, конечно же, говорит о проблеме .... Сколько строк ожидается пользователю? Хорошо, давайте предположим, что он неограничен. Является ли массив уже существующим и уже содержит строковые элементы? Предположим, кого это волнует.

Я даже не собираюсь спрашивать, как и где Пользователь должен ввести эти нужные строки. Является ли это из консоли или графического интерфейса какого-то типа, для меня в данный момент не имеет значения, потому что это, очевидно, не имеет значения для вас. Мы просто хотим, чтобы работа была выполнена, и это круто. Вот где код, который вы уже пробовали, полезен тем, кто пытается помочь. Знаешь, помоги тем, кто поможет тебе.

Давайте начнем с нового и предположим, что наш массив, который должен удерживать пользовательские строки ввода, еще не установлен. Назовем его inputStringArray, и у нас есть переменная, которая должна содержать ввод строки от пользователя, назовем его inputString. Код, который слишком прокомментирован, должен заботиться о бизнесе.

Создать новый проект Java-приложение под названием UserInputToArray скопируйте/вставьте следующий код над авто созданного класса (в NetBeans в любом случае):

public class UserInputToArray { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // Where you declare or establish your input strings 
     // array is up to you as long as the scope of the 
     // varaible can reach our call to the addUserInputToArray 
     // method below. 
     String[] inputStringArray = {}; 

     // How you acquire the User's input string is up to you... 
     String inputString = "Hello There"; 

     // Pass our input string array and user string input to 
     // our addUserInputToArray() method and let it modify 
     // or rather append the User input string to our inputStringArray 
     // array variable. 
     inputStringArray = addUserInputToArray(inputStringArray, inputString); 

     // This is used just to test our input string array so that 
     // you can see that the User input string has been successfully 
     // appended to the inputStringArray array. you can omit it. 
     for (int i = 0; i < inputStringArray.length; i++){ 
      System.out.println(inputStringArray[i]); 
     } 
    } 

    /** 
    * This method is used to append a User Input String to our 
    * inputStringArray[] variable. 
    * @param stringArray : (String Array) This is where you supply the 
    * input string array variable. 
    * 
    * @param inputString : The User's supplied input string is provided here. 
    * 
    * @return : A String array with the Users string input appended to it but 
    * only if it is found that the string only contains Alphabetic characters 
    * (a to z and A to Z and spaces). 
    */ 
    public static String[] addUserInputToArray(String[] stringArray, String inputString) { 
     // Get the length of our input string array and add 1. 
     //This is used so we don't have to type stringArray.length 
     //all the time. 
     int length = (stringArray.length + 1); 

     // Here we use the string matches method with a small regex 
     // expression string to make sure only alphabetic charaters are 
     // contained within the supplied User input string. Expression 
     // breakdown: 
     // (?i) Ignore letter case (we don't need to worry about that in this case). 
     // [ a-z] Match any characters that are either a to z or a space. 
     // *  Any number of characters (strings can be any length). 
     // () All enclosed in a set of brackets to create a group. Not 
     //  really required in this case (just a habbit). 
     if (inputString.matches("((?i)[ a-z]*)")) { 
      // So, our acquired User input string has passed requirements and 
      // now it's time to append that string to our input string array. 
      // As you know there is no such thing as appending to an array so 
      // we need to simulate it and to do that we need to create a temporary 
      // array, increase its length to what is desired which in our case is 
      // once (1) every time this method is called, and then copy our passed 
      // original input string array into it while preserving the length of 
      // our temporary array and then finally forcing our original input 
      // string array to be our temporary array. Now we have a input string 
      // array which is one element size bigger than when we started and ready 
      // to have string data placed into it. 
      String[] tmp = new String[length]; 
      if (stringArray.length != 0) { 
       System.arraycopy(stringArray, 0, tmp, 0, Math.min(stringArray.length, tmp.length)); 
      } 
      stringArray = tmp; 

      // Append our User input string to the array. 
      stringArray[length-1] = inputString; 
     } 
     return stringArray; 
    } 

} 

Я надеюсь, что это поможет вам немного.

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