提问人:triplecute 提问时间:2/10/2020 最后编辑:luetriplecute 更新时间:2/10/2020 访问量:327
从文本文件中读取整数并存储到单独的变量中?(扫描仪)
Reading Integers from Text File and Storing Into Separate Variables? (Scanner)
问:
我这里有一个由两部分组成的问题。因此,我正在为一个作业编写代码,该作业尝试从文本文件中读取整数作为坐标。例如,我有一个名为 test1 的文本文件,内容如下:50 00 510 53 310 0。现在,这些整数应该代表坐标,这意味着 50 实际上转换为 (5,0)、(0,0)、(5,10) 等。
我正在尝试使用扫描仪进入该文本文件,并在该两位数整数中选择第一个数字并将其存储为“x”值,然后选择第二个数字并将其存储为“y”值,然后冲洗重复其余部分。
int nSheep = 0;
while (sc.hasNextLine()) {
nSheep++;
sc.nextLine();
}
这是我当前的代码,用于确定文本文件中有多少只羊。它基本上只是读取有多少行,对它们进行计数,并将它们存储在变量 nSheep 中。所以在我的 test1 文件示例中,它会返回数字 6。
for (int i = 0; i < nSheep; i++) {
while (sc.hasNextLine()) {
int x = sc.nextInt();
int y = sc.nextInt();
}
System.out.println(x);
}
这是我尝试读取整数并将它们存储在变量 x 和 y 中。我无法判断这是否接近工作,因为 println 没有打印出任何东西。
最后。。。
xMin = xMax = sc.nextInt();
yMin = yMax = sc.nextInt();
//read the remaining coordinates
for (int i = 1; i <= nSheep - 1; i++) {
while (sc.hasNextInt) {
int x = sc.nextInt();
int y = sc.nextInt();
if (x < xMin)
xMin = x;
if (x > xMax)
xMax = x;
if (y < yMin)
yMin = y;
if (y > yMax)
yMax = y;
if (x < xMin)
xMin = x;
if (x > xMax)
xMax = x;
if (y < yMin)
yMin = y;
if (y > yMax)
yMax = y;
}
}
System.out.print("Fence Coordinates: {(" + xMin + "," + yMin + "), ");
System.out.print("(" + xMax + "," + yMin + "), ");
System.out.print("(" + xMax + "," + yMax + "), ");
System.out.println("(" + xMin + "," + yMax + ") ");
这是成功的代码,如果我要求用户输入羊的数量和坐标自己,它就会起作用。唯一的区别是我不想要用户输入,我只想让扫描仪读取文本文件,确定坐标,然后打印出来。如果这个啰嗦的问题是有道理的,谁能帮我?
答:
0赞
lue
2/10/2020
#1
在 Java 中创建文件实例以引用文本文件
File text = new File("C:/temp/test1.txt");
在 Java 中创建 Scanner 实例以读取文件
Scanner sc = new Scanner(text);
所以
File text = new File("C:/temp/test1.txt");
Scanner sc = new Scanner(text);
int xMin, xMax;
xMin = xMax = sc.nextInt();
int yMin, yMax
yMin = yMax = sc.nextInt();
while (sc.hasNextLine()) {
int x = sc.nextInt();
int y = sc.nextInt();
if (x < xMin) { xMin = x; }
if (y < yMin) { yMin = y; }
if (x > xMax) { xMax = x; }
if (y > yMax) { yMax = y; }
}
System.out.println("Fence Coordinates:"
System.out.print("{ (" + xMin + "," + yMin + "), ");
System.out.print("(" + xMax + "," + yMin + "), ");
System.out.print("(" + xMax + "," + yMax + "), ");
System.out.print("(" + xMin + "," + yMax + ") } ");
评论
0赞
triplecute
2/10/2020
我收到错误:“没有这样的元素例外”知道这可能是什么吗?
0赞
lue
2/10/2020
然后,在一行中少于 2 个整数
0赞
triplecute
2/10/2020
你认为你可以扩展一下吗?你到底是什么意思?
0赞
lue
2/10/2020
您的文件如下所示: 12 23 (下一行) 23 78 (下一行) 80 ← 只有一个或更少的数字
0赞
triplecute
2/10/2020
所以文件有 6 个数字,有没有办法跳过空格?
评论
min
max
while (sc.hasNextInt) {
不会编译231
(23, 1)
(2, 31)
(231, 0)
(0, 231)