Java 使用扫描仪将同一行读两遍
在一个类中,我有一个方法Java 使用扫描仪将同一行读两遍,java,java.util.scanner,Java,Java.util.scanner,在一个类中,我有一个方法replay,其中我创建了一个Scanner对象sc。 扫描器从文件中读取一行中的第一个单词。 然后,我将该扫描器对象传递给另一个类中的方法。用这种方法,我想读一行中的其余数字 该文件由以下数据组成: Cat 2 4 Dog 3 1 Bird 2 5 Cow 4 1 第一种方法读作“Cat”,第二种方法读作“2”和“4” 我的问题是,在第二种方法中,我再次使用了sc.nextLine(),这使得扫描仪跳转到下一行,而不是它开始的那一行(在第一种方法中) 如何使Sc
replay
,其中我创建了一个Scanner
对象sc
。
扫描器从文件中读取一行中的第一个单词。
然后,我将该扫描器对象传递给另一个类中的方法。用这种方法,我想读一行中的其余数字
该文件由以下数据组成:
Cat 2 4
Dog 3 1
Bird 2 5
Cow 4 1
第一种方法读作“Cat”,第二种方法读作“2”和“4”
我的问题是,在第二种方法中,我再次使用了sc.nextLine()
,这使得扫描仪
跳转到下一行,而不是它开始的那一行(在第一种方法中)
如何使Scanner
与开始时保持在同一行
(注意,我需要将Scanner对象传递给新方法,这是作业中的说明,因此我无法更改)
类内联:
public class Inline {
public void replay() {
String line = "";
File file = new File("myFile.txt");
Scanner sc = null;
String firstWord = null;
try {
sc = new Scanner(file);
while (sc.hasNextLine()) {
line = sc.nextLine();
String parts[] = line.trim().split("\\s+");
firstWord = parts[0];
Command moveCommand = new MoveCommand();
moveCommand.load(sc); **//HERE I PASS SCANNER-OBJECT TO LOAD**
}
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}
类移动命令:
public class MoveCommand implements Command {
private int second;
private int third;
public MoveCommand() {}
@Override
public void load(Scanner sc) {
String line = "";
line = sc.nextLine(); **//HERE I USE SC.NEXTLINE() AGAIN. IS THERE ANOTHER WAY???**
String parts[] = line.trim().split("\\s+");
second = Integer.parseInt(parts[1]);
third = Integer.parseInt(parts[2]);
}
}
扫描仪可以逐个令牌读取令牌。标记是使用分隔符拆分的输入的一部分
从:
Scanner
使用定界符模式将其输入分解为标记,默认情况下,定界符模式与空白匹配。然后,可以使用各种next
方法将生成的令牌转换为不同类型的值
由于您的字符串
已经需要被空格打断,所以您的工作几乎完成了
试着从中得到一个想法(我不想为你解决):
输出:
Cat
3
4
扫描仪可以逐个令牌读取令牌。标记是使用分隔符拆分的输入的一部分
从:
Scanner
使用定界符模式将其输入分解为标记,默认情况下,定界符模式与空白匹配。然后,可以使用各种next
方法将生成的令牌转换为不同类型的值
由于您的字符串
已经需要被空格打断,所以您的工作几乎完成了
试着从中得到一个想法(我不想为你解决):
输出:
Cat
3
4
扫描仪可以逐个令牌读取令牌。标记是使用分隔符拆分的输入的一部分
从:
Scanner
使用定界符模式将其输入分解为标记,默认情况下,定界符模式与空白匹配。然后,可以使用各种next
方法将生成的令牌转换为不同类型的值
由于您的字符串
已经需要被空格打断,所以您的工作几乎完成了
试着从中得到一个想法(我不想为你解决):
输出:
Cat
3
4
扫描仪可以逐个令牌读取令牌。标记是使用分隔符拆分的输入的一部分
从:
Scanner
使用定界符模式将其输入分解为标记,默认情况下,定界符模式与空白匹配。然后,可以使用各种next
方法将生成的令牌转换为不同类型的值
由于您的字符串
已经需要被空格打断,所以您的工作几乎完成了
试着从中得到一个想法(我不想为你解决):
输出:
Cat
3
4
您可以更改什么?为什么不使用next()
来代替呢?@DHall只要我通过sc,我就可以更改方法中的内容。您可以更改什么?为什么不使用next()
来代替呢?@DHall只要我通过sc,我就可以更改方法中的内容。您可以更改什么?为什么不使用next()
相反?@DHall我可以更改方法中的内容,只要我通过sc。您可以更改什么?为什么不使用next()
代替?@DHall我可以更改方法中的内容,只要我通过sc。我将您的代码应用到我的程序中,它就可以工作。谢谢:-)我将你的代码应用到我的程序中,它运行正常。谢谢:-)我将你的代码应用到我的程序中,它运行正常。谢谢:-)我将你的代码应用到我的程序中,它运行正常。谢谢:-)