2016-09-22 38 views
3

首先,我對Java和本網站都是全新的。我會盡可能徹底地問我的問題。不過,如果您認爲我遺漏了某些東西,請告訴我。Java:我如何確保或讓用戶在字符串中輸入逗號?

我正在做一個學校作業,而我被困在第二部分。我能夠提示用戶,但不能爲我的生活,弄清楚如何確保輸入字符串包含逗號。我確實嘗試過搜索這個網站,以及谷歌搜索,並沒有找到任何東西。也許我不適當地提出這個問題。

(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(「,」){do something – 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" 

這個信息,你也可以告訴我們,如果用戶輸入正確的輸入的字符串數組...即...

如果splitStringArray.Length(或Size)= 0,那麼用戶di d不輸入任何內容,如果splitStringArray.Length(或Size)= 1,那麼用戶輸入1個沒有逗號的字符串......可能會檢查退出。如果splitStringArray.Length(或Size)= 2,則用戶正確輸入字符串。如果splitStringArray.Length(Size)> 2,那麼用戶輸入一個多於一個逗號的字符串。

我希望這有助於描述string.split是如何工作的。然而

你的代碼需要一些工作......沒有進入太多細節下面是一個C#控制檯while循環爲例:

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(); 
    } 

} 

希望有所幫助。

相關問題