如何添加通过解析获得的值以获得 "column" 的 "value"?
How do I add the values I have gotten through parse to get the "value" of the "column"?
我的代码遍历输入文件并将其分解为 "columns."
System.out.println(numberdouble);
它打印出该列中每一行的值。我对此进行了测试,以检查我的程序是否会正确地遍历列。我想知道如何输出每一列的总和
示例:
[a, 1, 2, 3]
[3, v, 3, x]
[5, 1, d, c]
如果我对第 0 列的值求和,我希望它将 3 和 5 相加。如果列中的值不是数字,则应将该值转换为 0。
我的代码:
public static Double column_sum(String filename, int column)
{
if(column < 0)
{
return null;
}
File temp = new File(filename);
Scanner input_file;
try
{
input_file = new Scanner(temp);
}
catch (Exception e)
{
return null;
}
ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
while(input_file.hasNextLine())
{
String line = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(line.split(",")));
Double numberdouble =0.0;
String numberstring = myList.get(column);
if(isDouble(numberstring))
{
numberdouble = Double.parseDouble(numberstring);
}
else
{
numberdouble=0.0;
}
System.out.println(numberdouble);
}
return 1.23; //placeholder
}
您要做的是创建一个二维矩阵。并将值存储在其中。完成此操作后,将很容易解析和添加一列。
根据你的例子:
Double [][] myMatrix = new Double[3][4];
int counter = 0, rowIndex=0,columnIndex=0;
while(input_file.hasNextLine())
{ counter++;
if(counter%4 == 0)
{
rowIndex++;
columnIndex=0;
}
String line = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(line.split(",")));
Double numberdouble =0.0;
String numberstring = myList.get(column);
if(isDouble(numberstring))
{
numberdouble = Double.parseDouble(numberstring);
}
else
{
numberdouble=0.0;
}
myMatrix[rowIndex][columnIndex++] = number double;
System.out.println(numberdouble);
}
注意:索引将严格按照您的示例进行追踪。您可以使其更具可配置性。
请看下面的代码(我已经测试过了)。由于我不知道您的 isDouble
函数的实现,因此我构建了一个简单(但不优雅)的函数。我还标记了两个未使用的行,并添加了 input_file.close();
以关闭资源。 "test.txt"的内容和你输入的例子完全一样:
a,1,2,3
3,v,3,x
5,1,d,c
代码:
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class ColumnSum {
public static void main(String[] args) {
System.out.println(column_sum("test.txt", 0));
System.out.println(column_sum("test.txt", 1));
System.out.println(column_sum("test.txt", 2));
System.out.println(column_sum("test.txt", 3));
}
public static boolean isDouble(String s) {
try {
Double.parseDouble(s);
return true;
} catch (Exception e) {
return false;
}
}
public static Double column_sum(String filename, int column) {
Double sum = 0.0;
if (column < 0) {
return null;
}
File temp = new File(filename);
Scanner input_file;
try {
input_file = new Scanner(temp);
} catch (Exception e) {
return null;
}
// ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
while (input_file.hasNextLine()) {
String line = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(line.split(",")));
Double numberdouble = 0.0;
String numberstring = myList.get(column);
if (isDouble(numberstring)) {
numberdouble = Double.parseDouble(numberstring);
sum += numberdouble;
} else {
numberdouble = 0.0;
}
// System.out.println(sum);
}
input_file.close();
return sum;
}
}
输出为(每列):
8.0
2.0
5.0
3.0
我的代码遍历输入文件并将其分解为 "columns."
System.out.println(numberdouble);
它打印出该列中每一行的值。我对此进行了测试,以检查我的程序是否会正确地遍历列。我想知道如何输出每一列的总和
示例:
[a, 1, 2, 3]
[3, v, 3, x]
[5, 1, d, c]
如果我对第 0 列的值求和,我希望它将 3 和 5 相加。如果列中的值不是数字,则应将该值转换为 0。
我的代码:
public static Double column_sum(String filename, int column)
{
if(column < 0)
{
return null;
}
File temp = new File(filename);
Scanner input_file;
try
{
input_file = new Scanner(temp);
}
catch (Exception e)
{
return null;
}
ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
while(input_file.hasNextLine())
{
String line = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(line.split(",")));
Double numberdouble =0.0;
String numberstring = myList.get(column);
if(isDouble(numberstring))
{
numberdouble = Double.parseDouble(numberstring);
}
else
{
numberdouble=0.0;
}
System.out.println(numberdouble);
}
return 1.23; //placeholder
}
您要做的是创建一个二维矩阵。并将值存储在其中。完成此操作后,将很容易解析和添加一列。 根据你的例子:
Double [][] myMatrix = new Double[3][4];
int counter = 0, rowIndex=0,columnIndex=0;
while(input_file.hasNextLine())
{ counter++;
if(counter%4 == 0)
{
rowIndex++;
columnIndex=0;
}
String line = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(line.split(",")));
Double numberdouble =0.0;
String numberstring = myList.get(column);
if(isDouble(numberstring))
{
numberdouble = Double.parseDouble(numberstring);
}
else
{
numberdouble=0.0;
}
myMatrix[rowIndex][columnIndex++] = number double;
System.out.println(numberdouble);
}
注意:索引将严格按照您的示例进行追踪。您可以使其更具可配置性。
请看下面的代码(我已经测试过了)。由于我不知道您的 isDouble
函数的实现,因此我构建了一个简单(但不优雅)的函数。我还标记了两个未使用的行,并添加了 input_file.close();
以关闭资源。 "test.txt"的内容和你输入的例子完全一样:
a,1,2,3
3,v,3,x
5,1,d,c
代码:
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class ColumnSum {
public static void main(String[] args) {
System.out.println(column_sum("test.txt", 0));
System.out.println(column_sum("test.txt", 1));
System.out.println(column_sum("test.txt", 2));
System.out.println(column_sum("test.txt", 3));
}
public static boolean isDouble(String s) {
try {
Double.parseDouble(s);
return true;
} catch (Exception e) {
return false;
}
}
public static Double column_sum(String filename, int column) {
Double sum = 0.0;
if (column < 0) {
return null;
}
File temp = new File(filename);
Scanner input_file;
try {
input_file = new Scanner(temp);
} catch (Exception e) {
return null;
}
// ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
while (input_file.hasNextLine()) {
String line = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(line.split(",")));
Double numberdouble = 0.0;
String numberstring = myList.get(column);
if (isDouble(numberstring)) {
numberdouble = Double.parseDouble(numberstring);
sum += numberdouble;
} else {
numberdouble = 0.0;
}
// System.out.println(sum);
}
input_file.close();
return sum;
}
}
输出为(每列):
8.0
2.0
5.0
3.0