我正在尝试将字符串分开,并且没有逗号。 我们还没有像数组那样学到任何东西,这是一个介绍类。 我在这里找到的所有内容都不断给我错误或者对我在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)"
答案 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];