gpt4 book ai didi

java - 在java中读取字符串

转载 作者:搜寻专家 更新时间:2023-11-01 01:19:02 24 4
gpt4 key购买 nike

我一直在为学校编写此代码以创建类(class)、用户、学生和教师,但我在创建类(class)时遇到了障碍。

我想做的是(在终端中)读取一个输入流,例如“CSC 110 Into to java”,并将其全部输入到一个字符串中。我正在使用扫描仪进行输入。并尝试了 hasNext() 和 nextLine() 除了 next()。我想写一个函数来使用 char 数组获取整个字符串,然后将 char 数组转换为字符串。

首先我想知道是否有更简单的解决方案?

编辑:抱歉我没说清楚。无需深入研究我的所有代码。

当前代码:

        System.out.print("Enter the Course Title: ");
title = keyboard.nextLine();
System.out.print("Enter a Brief Course Description: ");
desc = keyboard.nextLine();

if (t != null)
{
do
{
System.out.println("\nPick a teacher\n");

for (int j = 0; j < t.size(); j++)
{
nTeacher = t.get(j);
s += "\t(" + (j+1) + ") " + nTeacher + "\n";
}

System.out.print(s + "\nEnter the Teacher ID: ");
int tId = keyboard.nextInt(); // My error

当前错误:

Enter the Course Title: CSC 110 Into to java

Enter a Breif Course Description:
Pick a teacher

Enter the Teacher ID:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:857)
at java.util.Scanner.next(Scanner.java:1478)
at java.util.Scanner.nextInt(Scanner.java:2108)
at java.util.Scanner.nextInt(Scanner.java:2067)
at Prototype.classCreator(Prototype.java:530)
at Prototype.mainMenu(Prototype.java:181)
at Prototype.login(Prototype.java:121)
at Prototype.main(Prototype.java:48)

当我使用 nextLine() 时

Create Class
Enter the courseID: 27222
Enter the Course Title: Enter a Brief Course Description:

预期结果:

Create Class
Enter the courseID: 27299
Enter the Course Title: CSC 110 Into to Java
Enter a Brief Course Description: Introduction to programming
Pick a teacher
(1) ID: 1111 Name: Bob
Enter the Teacher ID: 1
Class Created

我知道当我有三个字符串“CSC 110 Intro”时,它会进入 nextInt() 的输入,但我不明白为什么 nextLine() 会这样写我的 println。

最佳答案

好吧,您还没有告诉我们确切的错误是什么,所以我将只提供一些示例扫描程序代码并让您使用它:

//create the Scanner
Scanner terminalInput = new Scanner(System.in);

//read input
String s = terminalInput.nextLine();

那应该行得通; Scanner 是使用起来最简单的类之一。也许你不小心用到了

new Scanner(); //no input source!

而不是

new Scanner(System.in); //links to terminal

编辑:

我从你的输出中推测你正在调用

keyboard.nextInt();

以后

keyboard.nextLine();

这就是你程序的问题。 nextInt() 方法留下“\n”结束符并被 nextLine() 立即拾取,跳过下一个输入。你想要做的是对所有内容使用 nextLine,然后再解析它:

String nextIntString = keyboard.nextLine(); //get the number as a single line
int nextInt = Integer.parseInt(nextIntString); //convert the string to an int

这是迄今为止避免问题最简单的方法——不要混合使用“下一步”方法。仅使用 nextLine(),然后解析整数/单独的单词。

关于java - 在java中读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5534704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com