java-使用自己的类将txt扫描到2D数组中
首先,我想说这不是家庭作业或其他事情,我只是想更深入地了解这些i/O阵列,所以请随时告诉我如何解决扫描仪的问题,如果可以解决的话:p 如果我有一个txt文件,如下所示:java-使用自己的类将txt扫描到2D数组中,java,java.util.scanner,Java,Java.util.scanner,首先,我想说这不是家庭作业或其他事情,我只是想更深入地了解这些i/O阵列,所以请随时告诉我如何解决扫描仪的问题,如果可以解决的话:p 如果我有一个txt文件,如下所示: car 1 2 3 4 5 boat 1 2 3 4 5 plane 1 2 3 4 5 我在new.java文件中创建了一个新类,它是一个抽象的2d数组: class Type { String type; int number; }
car 1 2 3 4 5
boat 1 2 3 4 5
plane 1 2 3 4 5
我在new.java文件中创建了一个新类,它是一个抽象的2d数组:
class Type
{
String type;
int number;
}
public toString()
{
return String.format("%02d:%02d", type, number);
}
是否可能得到如下输出:
car:1 car:2 car:3
boat:1 boat:2 boat:3
等等?谢谢
编辑:当然也是一个数组列表
编辑2:
while (scanner.hasNext())
{
list.add(scanner.hasNext(), 0); //the array should be <car, 0>
} //later i will loop through numbers
while(scanner.hasNext())
{
list.add(scanner.hasNext(),0);//数组应为
}//稍后我将循环浏览数字
首先想到的是(假设您的文件始终具有该结构):
- 阅读您的行并使用
将行拆分为单词标记(string.split(\\s+)
表示正则表达式语言中的一个或多个空格)\\s+
- 如果您可以确定单词始终是行中的第一个元素,那么您可以从第二个标记(您的第一个数字)迭代到最后一个标记(您的最后一个数字)每次迭代都会创建一个新的
对象,其中类型
是第一个标记,类型
是第n个标记编号
n
数字,则可以使用进一步的正则表达式,例如^\\w+$
和^\\d+$
,分别查看哪个标记是单词或数字。一旦您知道哪个令牌是什么,您就可以参考以上几点来让代码正常工作
有关正则表达式的更多信息,请参阅教程。我建议的伪代码如下:
create line Scanner
while scanner has next *line*
get the next line
use String#split(" ") to create a String array from this line
Create your object from the items in this array
Add your new object into your list
end while loop
这是可以解决的。为什么不先试一试再在这里发布呢?你这样做不会破坏你的电脑,即使你的代码不起作用,你也会在努力提高自己能力的过程中学到比别人给你一个解决方案多得多的东西。我已经尝试过,但不幸的是,我有太多其他的东西要学,比如数学,所以我没有太多的时间去实验>。你说:
我已经试过了,但不幸的是,我有太多其他的东西要学,比如数学,所以我没有太多的时间去实验
——所以实际上你是说你的时间比我们的时间更宝贵?快点!我也被这部分卡住了:ArrayList list=new ArrayList()。。。。list.add(scanner.nextInt(),null)//加上类型,我似乎不知道如何迭代和输入数字,你能用像扫描器一样的扫描器使用索引吗?nextInt(1)(这将是第一个数字)我只是想说什么,因为时间不够,我无法进行实验。但是好吧,我会在几周后检查一下,等我考完试。。。关闭此:)编辑:你是说气垫船:(是的,我知道它是可以解决的,但我更喜欢使用扫描仪,因为它通常在处理文件时非常有用,因为它会将文件拆分为隐式标记。是的,我想这就是答案,当我想到这个问题时,我做了一个类似的伪草图:(而扫描仪有下一行)(在数组列表中首先保存下一行)(而scanner.hasNextInt(),print和increment num)我仍然不知道如何让我的2d数组在编辑时正常工作,所以谢谢你的帖子,我会在几周后再讨论这个问题,当我有更多的时间来学习使用扫描仪的2d数组时,我现在没有任何进展:P darnit,Code括号不适用于回复>。