在二维数组中输入和存储字符串

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 这是正确的吗? 是的,但是我会在输入姓名时输入所犯的罪行,所以我希望他们保持在一起,并按犯罪的字母顺序输出姓名、犯罪和年份。跨度>

以上是关于在二维数组中输入和存储字符串的主要内容,如果未能解决你的问题,请参考以下文章

将二维字符串数组传递给函数时出错 (C++)

二维字符数组如何输入和输出

c语言中怎样实现对二维数组元素进行赋值并输出。

在C语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?

C语言指向二维数组的指针

如何在 C# 中关闭这个循环二维数组?