Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用计数数组保存另一个数组的计数_Java_Arrays - Fatal编程技术网

Java 使用计数数组保存另一个数组的计数

Java 使用计数数组保存另一个数组的计数,java,arrays,Java,Arrays,我正在编写一个程序,它可以读取一个.txt文件中的天气数据,并记录一年中每一天的各种天气模式 txt文件有365行不同的值(一年中每天一行值)。每行包含高温、低温和天气状态(格式为六个1和0的字符串,其中1表示当天发生了雾/雨/雪/雹/雷/龙卷风)。例如,字符串011000,表示雨和雪同时发生 示例天气文件如下所示(间距换行): 高、低、天气字符串: 45,32.4,100000 43.2,35,100001 50.2,32.1 101101 我已经完成了通过weather.txt文件跟踪的绝大

我正在编写一个程序,它可以读取一个.txt文件中的天气数据,并记录一年中每一天的各种天气模式

txt文件有365行不同的值(一年中每天一行值)。每行包含高温、低温和天气状态(格式为六个1和0的
字符串
,其中1表示当天发生了雾/雨/雪/雹/雷/龙卷风)。例如,
字符串011000
,表示雨和雪同时发生

示例天气文件如下所示(间距换行):

高、低、天气字符串:

45,32.4,100000

43.2,35,100001

50.2,32.1 101101

我已经完成了通过weather.txt文件跟踪的绝大多数程序,并跟踪了年高和年低,但在统计每种类型(6种类型)的天气状态时遇到了困难。我意识到我并没有尽全力解释,但我的目标是统计所有365个格式化字符串值,每个字符串索引有多少个1。因此,在查看上面的示例天气文件时,我的最终结果将是[3,0,1,1,0,2]

在下面的粘贴方法中,我传入一个
字符串数组
(我以前在程序中创建了一个
字符串数组
,其中包含所有365个字符串格式的值…[100001、100000、101101,…])。在这个方法中,我创建了一个新的带有6个值的
计数数组。我试图编写一个循环,跟踪传入的
天气数组
(365个值),如果在所述索引处出现1,则增加
理货数组索引
。最后的
计数数组
看起来像[101,31,3,218,42,101]…组成了样本输出的数字

这个逻辑给了我很多麻烦。假设我已经尽了自己的一份力来解释这一点,谁能给我一些建议呢

注-天气类型数量的类别常数设置为6

public static int[] getWeatherCounts(String[] weather) {
    int[] tally = new int[6];

    for (int i = 0; i < weather.length; i++) {
        for (int j = 0; j < NUMBER_OF_WEATHER_TYPES; j++) {
            if (weather[j].charAt(j) == 1) {
                tally[j]++;
            }
            return tally;
        }
    }

    return tally;
}
public static int[]getWeatherCounts(字符串[]weather){
int[]理货=新的int[6];
for(int i=0;i
上下文的整个程序:

import java.util.*;
import java.io.*;

public class WeatherInfo {    
public static final int DAYS_PER_YEAR = 365;
public static final int NUMBER_OF_WEATHER_TYPES = 6;

public static void main (String[] args) {
    String firstArgs = args[0];
    Scanner input = null;

    if (args.length != 1) {
        System.out.println("Error"); //Look more into this!!!!
    } else {
        try {
            input = new Scanner(new File(firstArgs));

        } catch (FileNotFoundException e) {
            System.out.println("Error: " + e);
            System.exit(1);
        }
    }

    String lineDiscard = input.nextLine();

    double[] highs = new double[DAYS_PER_YEAR];
    double[] lows = new double[DAYS_PER_YEAR];
    String[] weather = new String[DAYS_PER_YEAR];

    for (int i = 0; i < DAYS_PER_YEAR; i++) {
        input.next();
        input.next();
        highs[i] = input.nextDouble();
        lows[i] = input.nextDouble();
        weather[i] = input.next();
    }

    displayWeatherStatistics(highs, lows, weather);

}    

public static void displayWeatherStatistics(double[] highs, double[] lows, String[] weather) {
    double highTemp = Integer.MIN_VALUE;
    double lowTemp = Integer.MAX_VALUE;

    // for loop for highs
    for (int i = 0; i < highs.length; i++) {
        if (highs[i] > highTemp) {
            highTemp = highs[i];
        }
    }

    // for loop for lows
    for (int i = 0; i < lows.length; i++) {
        if (lows[i] < lowTemp) {
            lowTemp = lows[i];
        }
    }

    // printouts for the low and high temps of the year...need to fix this a bit
    System.out.println("Highest Temp: " + highTemp + " (F)");
    System.out.println("Lowest  Temp: " + lowTemp + " (F)");

    System.out.println(Arrays.toString(getWeatherCounts(weather)));


}

public static int[] getWeatherCounts(String[] weather) {
    int[] tally = new int[6];


    for (int i = 0; i < weather.length; i++) {
        for (int j = 0; j < NUMBER_OF_WEATHER_TYPES; j++) {
            if (weather[i].charAt(j) == 1) {
                tally[j]++;
            }
             return tally;
        }



    }

     return tally;
}
import java.util.*;
导入java.io.*;
公共类WeatherInfo{
公共静态最终整数天/年=365;
公共静态最终整数天气类型=6;
公共静态void main(字符串[]args){
字符串firstArgs=args[0];
扫描仪输入=空;
如果(args.length!=1){
System.out.println(“错误”);//查看更多信息!!!!
}否则{
试一试{
输入=新扫描仪(新文件(第一个参数));
}catch(filenotfounde异常){
System.out.println(“错误:+e”);
系统出口(1);
}
}
字符串lineDiscard=input.nextLine();
双[]高=新双[每年天数];
double[]lows=新的double[每年的天数];
字符串[]天气=新字符串[每年的天数];
对于(int i=0;i高温){
高温=高温[i];
}
}
//低循环
for(int i=0;i

}

嗯,如果不看你的整个节目,很难判断。但在我看来

if (weather[j].charAt(j) == 1) {
    tally[j]++;
}
return tally;
应该是

if (weather[i].charAt(j) == '1') {
    tally[j]++;
}
// omit the return tally, we don't want to do that until the end

创建一个天气对象我在底部编辑了帖子以添加完整程序。您的逻辑对我来说是有意义的,但打印输出仍然在自动初始化版本中为我提供计数数组…[0,0,0,0,0,0]。在getWeatherCounts中,您在两个不同的位置返回计数。删除第一个。很有趣,我试过了,但仍然没有成功。我的计数数组仍然从其创建的值[0]读取数据。该死。最后,这是多么愚蠢的错误啊。我的1周围没有“”。谢谢你的帮助,但是,它很好地引导了我。