在二维数组中输入和存储字符串
Posted
技术标签:
【中文标题】在二维数组中输入和存储字符串【英文标题】:Input and storing Strings in two-dimensional arrays 【发布时间】:2013-09-18 23:51:00 【问题描述】:我的老师用两段文字解释了二维数组。除此之外,他没有给我任何关于如何创建它们的信息,现在我必须做一个任务。
我已经阅读了很多关于它的内容,并且我有点理解 2D 数组如何类似于数组的数组,但我仍然完全不知道如何应用它。
作业本身非常简单。它要求我创建一个程序,向用户询问十个犯罪记录(姓名、犯罪记录、年份)。该程序会将记录存储在一个二维数组中,然后使用选择排序对它们进行排序。
我知道这可能是错误的,但这是我目前所读到的内容:
public static void main(String[] args)throws IOException
//create array
String[][] Criminals = new String[10][3]; // create 3 columns, 10 rows
int i, j;
int smallest; //smallest is the current smallest element
int temp; //make an element swap
String line;
//loop to request to fill array
for (int row = 1; row < Criminals.length; row++)
for (int col = 1; col < Criminals[row].length; col++)
System.out.print("Enter a criminal name: ");
Criminals[row][col] = br.readLine();
到目前为止,我只是想获取输入并存储它。
(请尽量耐心和彻底地对待我!编码不是我的强项,但我正在努力学习。)任何帮助都会很棒!提前致谢。 :)
【问题讨论】:
你的数组应该被称为'criminals'而不是'Criminals'(注意小写'c' - 命名约定) 【参考方案1】:大部分看起来都不错。您应该从 0 开始索引数组,而不是 1。您当前的代码有效,但我猜您不希望所有条目都出现相同的提示。因此,使用单个循环可能是个好主意:
for (int row = 0; row < Criminals.length; row++)
System.out.print("Enter a criminal name: ");
Criminals[row][0] = br.readLine();
System.out.print("Enter a crime: ");
Criminals[row][1] = br.readLine();
System.out.print("Enter a year: ");
Criminals[row][2] = br.readLine();
【讨论】:
谢谢!这很棒!但是对于“输入年份”部分,年份是一个整数,我必须将其设为字符串。我将如何使用 2D 数组执行此操作?也许是 Integer.toString(i)? 您需要将其读取为int,然后将其插入为字符串?看起来很奇怪,但是你已经知道最好的方法了。 嗯,它是一个字符串二维数组,不是吗? “String[][] 犯罪分子”,那么它不应该是一个字符串吗?还是没有?【参考方案2】:import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner in = new Scanner(System.in);
//create array
String[][] criminals = new String[10][3]; // create 3 columns, 10 rows
int i, j;
int smallest; //smallest is the current smallest element
int temp; //make an element swap
String line;
//loop to request to fill array
for (int row = 0; row < criminals.length; row++)
System.out.print("Enter a criminal name: ");
while(in.hasNext())
criminals[row][0] = in.nextLine();
System.out.print("Enter a crime: ");
criminals[row][1] = in.nextLine();
System.out.print("Enter a year: ");
criminals[row][2] = in.nextLine();
这将从用户那里打印出您需要的命令并将其存储在犯罪分子中。最后你可以排序。由于您没有提供任何信息,您希望它如何排序,我将留给您做。
PS:我将 2d 数组名称从“犯罪分子”更改为“犯罪分子”,Java 的一个好习惯是属性和变量不使用大写字母(仅用于类名)
【讨论】:
非常感谢。 :) 它应该是一个选择排序。实际上,我确实需要帮助。我会尝试这样做并编辑我的问题以合并它。介意帮我一把吗? 我需要更多信息,而不是知道您将需要哪种类型的排序算法。你要排序什么?罪犯姓名?年? 哦,对不起。我要按犯罪类型排序! 我不认为你想要它排序,而是有序。像这样:袭击:crimeName4,crimeName5 抢劫:crimeName1,crimeName2 这是正确的吗? 是的,但是我会在输入姓名时输入所犯的罪行,所以我希望他们保持在一起,并按犯罪的字母顺序输出姓名、犯罪和年份。跨度>以上是关于在二维数组中输入和存储字符串的主要内容,如果未能解决你的问题,请参考以下文章