如何打印2D阵列的间隔

时间:2019-03-06 19:03:09

标签: java arrays 2d

所以我用文件中的数据初始化了我的2D数组,我想知道是否可以仅在此间隔内将System.out.print打印出来。

public static void OptionUn (String[][] TableauLectureFichier) {

    Scanner rDates = new Scanner(System.in);

    System.out.println("ENTER YOUR INTERVAL HERE IN THE FOLLOWING ORDER DAY1 MONTH1 DAY2 MONTH2");

    String Intervale = rDates.nextLine();

    String[] TabChaine = Intervale.split(" ");
    int[] tIntervale = new int[4];

    for (int i = 0; i <TabChaine.length; i++) {            
        tIntervale[i] = Integer.parseInt(TabChaine[i]);
    }

    int j1 = tIntervale[0],
        j2 = tIntervale[2],
        m1 = tIntervale[1],
        m2 = tIntervale[3];
}

我的数组基本上包含温度,每行是某个日期的温度,其所有顺序为1月1日至12月31日。我的问题是,我如何只能System.out.print用户输入的日期之间的温度。例如1月1日至2月1日(1 1 1 2)。

因此数组如下所示。这是一个不规则的二维数组

String[][] TableauLectureFichier = new String[12][];
        TableauLectureFichier[1] = new String[31];
        TableauLectureFichier[2] = new String[LeapYear];
        TableauLectureFichier[3] = new String[31];
        TableauLectureFichier[4] = new String[30];
        TableauLectureFichier[5] = new String[31];
        TableauLectureFichier[6] = new String[30];
        TableauLectureFichier[7] = new String[31];
        TableauLectureFichier[8] = new String[31];
        TableauLectureFichier[9] = new String[30];
        TableauLectureFichier[10] = new String[31];
        TableauLectureFichier[11] = new String[30];
        TableauLectureFichier[12] = new String[31];

LeapYear是一种计算2月是28天还是29天的方法

2 个答案:

答案 0 :(得分:0)

我想您想从传递给函数的二维数组中打印,并使用用户的输入来从传递的数组中打印选定范围?

您的问题必须是,仅执行两个嵌套循环将无法为您解决此问题。相反,您希望将日历从“开始月份”和“开始日期”增加到“结束月份”和“结束日期”。

更新

好吧,由于您不想为此使用日历,因此,您可以通过一点点逻辑遍历2d数组来完成此操作。我将假定数组第二维的长度会根据我们所处的月份而有所不同。这意味着,提供数据的代码在每个有效日期都只有一个条目。

因此,如果数据记录在a年,则2月份的数组维长度将仅为29。(TableauLectureFichier[1].length == 29

然后您可以执行以下操作:

public static void OptionUn (String[][] TableauLectureFichier) {

    Scanner rDates = new Scanner(System.in);

    System.out.println("ENTER YOUR INTERVAL HERE IN THE FOLLOWING ORDER DAY1 MONTH1 DAY2 MONTH2");

    String Intervale = rDates.nextLine();

    String[] TabChaine = Intervale.split(" ");
    int[] tIntervale = new int[4];

    for (int i = 0; i <TabChaine.length; i++) {            
        tIntervale[i] = Integer.parseInt(TabChaine[i]);
    }

    int j1 = tIntervale[0],
        j2 = tIntervale[2],
        m1 = tIntervale[1],
        m2 = tIntervale[3];

    // Loop through all the months specified, taking care to convert from base 1 
    // to base 0
    for (int month = m1 - 1; month < m2; month++) {
        // Assume that we will start at the first day of a month
        int day = 0;

        // However, if the current month is the first, start from the day specified as j1 
        // instead, and convert to base 0 so that we can use it to index into the array
        if (month == m1) {
            day = j1 - 1;
        }

        // Assume that we will run till the end of this month, or in this case to the end
        // of the array for the current month
        int endDay = TableauLectureFichier[month].length;

        // If the current month is the last month, only run to specified end day
        if (month == m2) {
            endDay = j2;
        }

        // Now run from the start day to the end day in the current month, paying 
        // attention to that endDay is still base 1
        for (; day < endDay; day++) {
            System.out.println(String.format("Month: %d, day: %d, value %s",
                month, 
                day, 
                TableauLectureFichier[month][day]));
        }

        // At this point we will step into the next month
    }
}

我尚未在month或'day'变量中添加边界检查。因此,如果您要将此文件交给任何人-请在使用数组中的变量之前添加边界检查。

答案 1 :(得分:0)

public static void OptionUn(String [] [] TableauLectureFichier){

Scanner rDates = new Scanner(System.in);

System.out.println("ENTER YOUR INTERVAL HERE IN THE FOLLOWING ORDER DAY1 MONTH1 DAY2 MONTH2");

String Intervale = rDates.nextLine();

String[] TabChaine = Intervale.split(" ");
int[] tIntervale = new int[4];

for (int i = 0; i <TabChaine.length; i++) {            
    tIntervale[i] = Integer.parseInt(TabChaine[i]);
}

int j1 = tIntervale[0],
    j2 = tIntervale[2],
    m1 = tIntervale[1],
    m2 = tIntervale[3];


for(int i=m1+1; i < m2; i++) {
    for(int j=j1+1; j < j2; j++) {
         System.out.printf("Temperature on day %d and month %d: %s", j, i,  TableauLectureFichier[i][j]);
    }
}

}