2016-09-22 2 views
3

Во-первых, я совершенно новый и для Java, и для этого веб-сайта. Я собираюсь задать свой вопрос так тщательно, как только смогу. Однако, пожалуйста, дайте мне знать, если вы думаете, что я что-то оставил.Java: Как я могу обеспечить или ввести пользователя ввести запятую в строку?

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

(1) Запросить пользователя для строки, содержащей две строки, разделенные запятой. (2) Сообщите об ошибке, если входная строка не содержит запятую. Продолжайте запрашивать до ввода правильной строки. Примечание. Если вход содержит запятую, тогда предположим, что вход также содержит две строки.

До сих пор у меня есть это:

public static void main(String[] args) { 

    Scanner scnr = new Scanner(System.in); // Input stream for standard input 
    Scanner inSS = null;     // Input string stream 
    String lineString = "";    // Holds line of text 
    String firstWord = "";     // First name 
    String secondWord = "";     // Last name 
    boolean inputDone = false;    // Flag to indicate next iteration 

    // Prompt user for input 
    System.out.println("Enter string seperated by a comma: "); 

    // Grab data as long as "Exit" is not entered 
    while (!inputDone) { 

     // Entire line into lineString 
     lineString = scnr.nextLine(); 

     // Create new input string stream 
     inSS = new Scanner(lineString); 

     // Now process the line 
     firstWord = inSS.next(); 

     // Output parsed values 
     if (firstWord.equals("q")) { 
      System.out.println("Exiting."); 

      inputDone = true; 

     if else (lineString != ",") {  // This is where I am stuck! 
      System.out.print("No comma in string"); 
     } 
     } else { 
      secondWord = inSS.next(); 


      System.out.println("First word: " + firstWord); 
      System.out.println("Second word: " + secondWord); 

      System.out.println(); 
     } 
    } 

    return; 
} 

}

Я знаю, что мой "если еще", вероятно, не является правильным. Я просто не знаю, с чего начать эту конкретную команду. К сожалению, моя глава книги не касалась этого. Любые мысли были бы весьма признательны. Спасибо огромное!

+1

if (lineString.contains (",") {сделать что-то – ivan

+1

Вы пытались запустить его? Что происходит? Работает ли оно или что-то неожиданное? Объясните проблему, сообщите нам, что вы сделали, что должно произойти, и –

+0

В Java нет такого выражения, как 'if else'. Это' if (...) {...} else {...} '. Помимо этого, посмотрите на' String.split() 'для разбиения строки на запятую. –

ответ

0

Я подозреваю, что вы хотите утверждать, что вход содержит запятую, и по крайней мере одну букву с каждой стороны. Для этого вам необходимо регулярное выражение:

if (!input.matches("[a-zA-Z]+,[a-zA-Z]+")) { 
    System.out.print("Input not two comma separated words"); 
} 
0

Поскольку вы ищете строку с запятой в нем, и вы хотите, чтобы получить строку «До» запятой и строки «После» запятой, затем String.split (',') - это то, что вы хотите. Запрашивая, не содержит ли строка «Содержит» запятую информацию о строке до запятой или после нее. Вот где string.split() помогает. Так как вам все равно «Где» запятая, вы просто хотите строку перед запятой и строку после запятой. Метод string.split (',') возвращает массив строк, содержащий строки, разделенные запятыми (в вашем случае) или любым символом. Пример:

string myString = “firstpart,secondpart”; 

... тогда

string[] splitStringArray = myString.Split(‘,’) 

Это возвращает массив строк размером 2, где

splitStringArray[0] = “firstpart” 
splitStringArray[1] = “secondpart" 

с этой информацией вы можете сказать, если пользователь ввел правильный вход ... ie ...

если splitStringArray.Length (или Size) = 0, то пользователь di d не вводить ничего, если splitStringArray.Length (или Size) = 1, тогда строка ввода пользователя 1 без запятых ... может проверить на выход здесь. Если splitStringArray.Length (или Size) = 2, то пользователь правильно вводит строку. если splitStringArray.Length (Size)> 2, то пользователь вводит строку с более чем 1 запятой.

Я надеюсь, что это поможет в описании работы string.split.

Ваш код, однако требует доработки ... не вдаваясь в подробности ниже, является C# консоли в то время как цикл в качестве примера:

inputDone = false; 
while (!inputDone) 
{ 
    Console.Clear(); 
    Console.WriteLine("Enter string seperated by a comma: "); 
    lineString = Console.ReadLine(); 
    string[] splitStringArray = lineString.Split(','); 

    // check for user to quit 
    if (splitStringArray.Length == 1) 
    { 
    if (splitStringArray[0] == "q") 
    { 
     inputDone = true; 
     Console.Clear(); 
    } 
    else 
    { 
     // 1 string that is not "q" with no commas 
    } 
    } 

    if (splitStringArray.Length == 2) 
    { 
    // then there are exactly two strings with a comma seperating them 
    // or you may have ",string" or "string," 
    Console.WriteLine("First word: " + splitStringArray[0]); 
    Console.WriteLine("Second word: " + splitStringArray[1]); 
    Console.ReadKey(); 
    } 
    else 
    { 
    Console.WriteLine("Input string empty or input string has more than two strings seperated by commas"); 
    Console.ReadKey(); 
    } 

} 

Надежда, что помогает.

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