如何在Java中解析字符串?

时间:2017-02-04 01:07:55

标签: java parsing split

我正在完成家庭作业,无法在我的在线教科书或其他任何地方找到答案。

我的作业问题分为四个部分:

  1. 提示用户输入包含两个以逗号分隔的字符串的字符串。

  2. 如果输入字符串不包含逗号,则报告错误。继续提示,直到输入有效字符串。注意:如果输入包含逗号,则假设输入还包含两个字符串。

  3. 从输入字符串中提取两个单词并删除所有空格。将字符串存储在两个单独的变量中并输出字符串。

  4. 使用循环,扩展程序以处理多行输入。继续,直到用户输入q退出。

  5. Final outcome should print out as follows:
    Enter input string: Jill, Allen
    First word: Jill
    Second word: Allen
    
    Enter input string: Golden , Monkey
    First word: Golden
    Second word: Monkey
    
    Enter input string: Washington,DC
    First word: Washington
    Second word: DC
    

    输入输入字符串:q

    我的代码输出不正确。我不知道如何制作自动,不是在我的第一个单词后显示或显示为我的第二个单词。我试过用 String [] array = s.split(",);并且类程序无法识别此命令和错误。

    这是我的代码:

    import java.util.Scanner;
    
    public class ParseStrings {
       public static void main(String[] args) {
          Scanner scnr = new Scanner(System.in); 
          Scanner inSS = null;                   
          String firstWord = " ";                
          String secondWord = "";
          String lineString = "";
          boolean inputDone = false; 
    
          while (!inputDone) {
             lineString = scnr.nextLine();
             inSS = new Scanner(lineString);
             firstWord = inSS.next();
             System.out.print("Enter input string: \n");
    
    
             if (firstWord.equals("q")){
                System.out.println("First word: " + firstWord);
                inputDone = true; 
             } else {
                secondWord = inSS.next();
                System.out.println("First word: " + firstWord);
                System.out.println("Second word: " + secondWord);
                System.out.println();
            }
          }
    
    
          return;
       }
    }
    

    如何编码此字符串以包含和排除逗号并打印出错误。我不明白我需要做什么。

3 个答案:

答案 0 :(得分:1)

我不想写解决方案的代码。只需给你一些意见,就可以自己做出正确答案。毕竟这是你的运动。

  1. 您不需要使用两个Scanner就足够了。
  2. 执行lineString
  3. 后检查变量scnr.nextLine()
  4. String方法split通常有助于弄清楚

答案 1 :(得分:0)

import java.util.Scanner;

public class ParseStrings {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      String userInput = "";
      boolean inputDone = false; 

      while (!inputDone) {
         System.out.print("Enter input string: \n");
         userInput = scnr.nextLine()


         if (userInput.equals("q")){
            System.out.println("First word: " + userInput);
            inputDone = true; 
         } else {
            String[] userArray = userInput.split(",");
            System.out.println("First word: " + userArray[0]);
            System.out.println("Second word: " + userArray[1]);
            System.out.println();
        }
      }


      return;
   }
}

说明: 首先,创建一个对象Scanner。然后,用户的输入存储在userInput中。之后,java检查用户是否输入q,如果是,则结束应用程序。否则,java将字符串拆分为两个单词然后打印出来。

请记住,理解代码是学习编程语言的一个非常重要的过程,所以请理解代码,而不是复制并粘贴它作为您的作业提交。

答案 2 :(得分:0)

我在课堂上遇到了同样的问题,这对我来说是一个非常具有挑战性的问题。使用此处发布的代码,我可以得到正确的答案,只需要对其进行非常小的修改。感谢您的帮助。下面是上面我用来获取正确答案的代码的修改版本。

import java.util.Scanner;

public class ParseStrings {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      String userInput = "";
      boolean inputDone = false; 

      while (!inputDone) {
         System.out.print("Enter input string: \n");
         userInput = scnr.nextLine();

         if (userInput.equals("q")){
            inputDone = true;
            break;
         }

         if(userInput.indexOf(",") == -1){ //if comma is not found in the user input
         System.out.println("Error: No comma in string");
         continue;
         }


          else {
            String[] userArray = userInput.split(",");
            System.out.println("First word: " + userArray[0].trim());
            System.out.println("Second word: " + userArray[1].trim());
            System.out.println();
            System.out.println();
        }
      }


      return;
   }
}