家庭作业解析字符串:从字符串中删除逗号(java zybooks)

时间:2017-12-03 01:23:19

标签: java string parsing

我正在尝试将字符串分开,并且没有逗号。 我们还没有像数组那样学到任何东西,这是一个介绍类。 我在这里找到的所有内容都不断给我错误或者对我在zybooks中的代码没有任何作用。

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 = "";                // 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 input string: ");


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


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


        inSS = new Scanner(lineString);


        firstWord = inSS.next();

        lineString.split(",");

        // Output parsed values
        if (firstWord.equals("q")) {
            System.out.println("Enter input string: ");

            inputDone = true;
        }
            //This may be where I am messing up??
        else if (lineString.contains(",")) { 

            secondWord = inSS.next();


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

            System.out.println();


        } else {

            System.out.println("Error: No comma in string");
            System.out.println("Enter input string: ");

        }
    }


    return;
    }
}

我正在弄乱某个地方并继续得到不同的错误代码,因为我一直搞乱它......

  

"输入输入字符串:
  第一个字:吉尔,
  第二个词:艾伦"

什么时候应该

  

"输入输入字符串:
  第一个字:吉尔
  第二个词:艾伦"

然后当计算机输入更多数据时,我开始收到此消息:

  

"线程中的异常" main" java.util.NoSuchElementException"
  在java.util.Scanner.throwFor(Scanner.java:862)
  在java.util.Scanner.next(Scanner.java:1371)
  在ParseStrings.main(ParseStrings.java:44)"

2 个答案:

答案 0 :(得分:0)

其中一种可能性(如果你没有学习数组)是使用StringBuilder并删除逗号或简单地循环输入字符串,如果字符在假设索引8是逗号,则执行yourString.substring(0,8 );;然后将第二个单词打印为yourString.substring(10,yourstring.length);我在第二个子字符串中放置了索引10,因为你想跳过逗号和一个分隔名字和姓氏的空格。下面是使用String类的代码示例,它是方法和for循环:

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        System.out.print("Enter first name and last name: ");
        String str = in.nextLine();

        int indexOfComma = 0;

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ',')
                indexOfComma = i;
        }

        System.out.println("First name is: " + (str.substring(0, indexOfComma)));
        System.out.println("Last name is: " + (str.substring(indexOfComma + 2, str.length())));

    }
 }

或者我看到你尝试使用split()(但是因为你说你没有学习数组但我在上面发布了解决方案),你可以使用.split()这样做:

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        System.out.print("Enter first name and last name: ");
        String[] name = in.nextLine().split(", ");

        System.out.println("First name is: " + name[0]);
        System.out.println("Last name is: " + name[1]);

    }
 }

此外,这是一个StringBuilder类的例子:

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        System.out.print("Enter first name and last name: ");
        StringBuilder name = new StringBuilder(in.nextLine());

        name.deleteCharAt(name.indexOf(","));

        System.out.println("Full name is: " + name);

    }
}

答案 1 :(得分:0)

当扫描程序读取所有数据时发生错误,例如调用nextLine方法并且没有行...或者在逗号后面没有空格的下一个方法

默认情况下,扫描程序使用空格作为分隔符。如果要在任何空格之前添加逗号分隔符,可以尝试使用

Scanner sc=new Scanner(System.in);
sc.useDelimiter(",?\\s+");

现在,sc.next()只会从Hello中读取Hello, World,第二次调用它应该会返回World

或者您可以使用您制作的阵列

String[] words = lineString.split(",");
String first = words[0]:
String second = words[1];