如何在Java中解析字符串?

v440hwme  于 2023-02-07  发布在  Java
关注(0)|答案(5)|浏览(178)

我正在做家庭作业,在网上课本或其他任何地方都找不到答案。
我的家庭作业问题有四个部分:
1.提示用户输入包含两个用逗号分隔的字符串的字符串。
1.如果输入字符串不包含逗号,则报告错误。继续提示,直到输入有效的字符串。注意:如果输入包含逗号,则假定输入还包含两个字符串。
1.从输入字符串中提取两个单词并删除所有空格。将字符串存储在两个单独的变量中并输出字符串。
1.使用一个循环,扩展程序以处理多行输入。继续直到用户输入q退出。

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

我怎样才能编写这个字符串来包含和排除逗号并打印出错误。我不明白我需要做什么。

vddsk6oq

vddsk6oq1#

我不想写解决方案的代码。只是给予你一些输入,自己得出正确的答案。这毕竟是你的练习。
1.您不需要使用两个Scanner,一个就足够了。
1.执行scnr.nextLine()后检查变量lineString

  1. String方法split通常有助于计算
r6l8ljro

r6l8ljro2#

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将字符串拆分为两个单词并打印出来。
请记住,理解代码是学习编程语言的一个非常重要的过程,所以请,请理解代码,而不是仅仅复制粘贴它作为家庭作业提交。

lx0bsm1f

lx0bsm1f3#

我得到了这个相同的问题在我的类,这是一个非常具有挑战性的问题,我弄清楚。我能够得到正确的答案使用代码张贴在这里,只需要非常轻微的修改作出了它。谢谢你的帮助。下面是修改版本的上述代码,我用来得到正确的答案。

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;
   }
}
wixjitnu

wixjitnu4#

我为这个问题所做的单元是关于使用inSS的,所以我想尝试用它来解决这个问题。我确实被困在不断地收集第二个单词的逗号,但是在咨询了别人之后,有人建议使用分隔符来传递逗号。我确实不得不添加一个修剪()命令,以消除inSS捕获单词时单词周围的白色。##

import java.util.Scanner;

public class ParseStrings {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      //Input string stream
       Scanner inSS = null;
    //Input string 
    String inputWords;
    // first word
    String firstWord;
    //Comma check;
    String commaCheck;
    //second word
    String secondWord;
    //flag to indicate next iteration
       boolean inputDone;
    
       inputDone = false;

    //prompt the user to input string 
    System.out.println("Enter input string: ");
    
    //take input data as long as "q" is not ent
    while (!inputDone){
    
        //entire line into inputWords
        inputWords = scnr.nextLine();
        
        //Init scanner object with string
        inSS = new Scanner(inputWords);

        //Set the delimiter to "," and new line
        inSS.useDelimiter("[,\n]");
   
        //process the line
        firstWord = inSS.next();
   
        //output parsed values
        if (firstWord.equals("q")){
            inputDone = true;
            break;
        }
        
        //comma check
        if(inputWords.indexOf(",") == -1){
            System.out.println("Error: No comma in string");
            System.out.println("Enter input string: ");
            continue;
        }
        else {
            secondWord = inSS.next();
            System.out.println("First word: " + firstWord.trim());
            System.out.println("Second word: " + secondWord.trim());
            System.out.println();
            System.out.println();
        }
        System.out.println("Enter input string: ");
                

   
    }

    }   
}
mbskvtky

mbskvtky5#

这对我很有效。

import java.util.Scanner;
public class ParseStrings {
   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 = "";           // Input string   
      String firstWord = "";             // Word one
      String secondWord = "";             // word two
      boolean inputDone = false;
  
      while (!inputDone) {

         System.out.println("Enter input string: ");

         // Entire line into lineString
         lineString = scnr.nextLine();
  
         // Create new input string stream
         inSS = new Scanner(lineString);
     
         //Set the delimiter to "," and new line
         inSS.useDelimiter("[,\n]");
     
         if (lineString.equals("q")) {
            inputDone = true;
            break;
         }
     
         if (lineString.indexOf(",") == -1) {
            System.out.println("Error: No comma in string");
        
            continue;  
     
         }
         else {
  
            // Now process the line           
            firstWord = inSS.next();
            // Now process the line
            secondWord = inSS.next();
  
            System.out.println("First word: " + firstWord.trim().replace(",", ""));
            System.out.println("Second word: " + secondWord.trim().replace(",", "") + "\n\n");
         }   
     
      }
      return;
   }
}

相关问题