gpt4 book ai didi

java - 如何将字符串输入二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:45 25 4
gpt4 key购买 nike

我有这段代码,我需要将字符串“Name”、“Testav”、“HWav”、“Lows”、“grade”导出到二维数组中,其中的列分别如下。然后我需要将二维数组导出到 csv 文件中。任何帮助将不胜感激。

import java.util.*;
import java.io.*;
import java.io.PrintWriter;
import java.text.*;
public class ComputeGrades {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);

System.out.printf("Please enter the name of the input file: ");
String input_name = in.next();
System.out.printf("Please enter the name of the output CSV file: ");
String csv_name = in.next();
System.out.printf("Please enter the name of the output pretty-print file: ");
String pretty_name = in.next();

processGrades(input_name, csv_name, pretty_name);
System.out.printf("\nExiting...\n");
}
public static void processGrades (String input_name, String csv_name, String pretty_name)
{
PrintWriter csv = null;
PrintWriter pretty = null;
String[][] data = readSpreadsheet(input_name);

boolean resultb = sanityCheck(data);
int length = data.length;
ArrayList<String> test_avg = new ArrayList<String>();
ArrayList<String> HW_avg = new ArrayList<String>();
ArrayList<String> NAME = new ArrayList<String>();
ArrayList<String> ColN = new ArrayList<String>();
ArrayList<String> Hell = new ArrayList<String>();
String[][] kill_me = new String[length][];
for(int row = 1; row<length; row++)
{
String name = data[row][0];
String name2 = data[row][1];
String Name = name+" "+name2;
int test1 = Integer.parseInt(data[row][2]);
int test2 = Integer.parseInt(data[row][3]);
int test3 = Integer.parseInt(data[row][4]);
int Test = (test1+test2+test3)/3;
String Testav = Integer.toString(Test);
int hw1 = Integer.parseInt(data[row][5]);
int hw2 = Integer.parseInt(data[row][6]);
int hw3 = Integer.parseInt(data[row][7]);
int hw4 = Integer.parseInt(data[row][8]);
int hw5 = Integer.parseInt(data[row][9]);
int hw6 = Integer.parseInt(data[row][10]);
int hw7 = Integer.parseInt(data[row][11]);
int HW = (hw1+hw2+hw3+hw4+hw5+hw6+hw7)/7;
String HWav = Integer.toString(HW);
int[] trying = {Test, HW};
int low = find_min(trying);
String Lows = Integer.toString(low);
String grade = null;
if(low>=90)
{
grade ="A";
}
if(low < 90 && low>= 80)
{
grade = "B";
}
if(low <80 && low>=70)
{
grade ="C";
}
if(low<70 && low>=60)
{
grade="D";
}
if(low<60)
{
grade = "F";
}
test_avg.add(Testav);
HW_avg.add(HWav);
NAME.add(Name);
Hell.add(Name);
Hell.add(Testav);
Hell.add(HWav);
Hell.add(Lows);
Hell.add(grade);
}
System.out.println(Hell);
System.out.printf("\n");
File csvFile = new File(csv_name);
try (PrintWriter csvWriter = new PrintWriter(new FileWriter(csvFile));){
Hell.stream().forEach(csvWriter::println);
} catch (IOException e) {
}

}


public static int find_min(int[] values)
{
int result = values[0];
for(int i = 0; i<values.length; i++)
{
if(values[i]<result)
{
result = values[i];
}
}
return result;
}
public static boolean sanityCheck(String[][] data)
{
if (data == null)
{
System.out.printf("Sanity check: nul data\n");
return false;
}
if(data.length<3)
{
System.out.printf("Sanity check: %d rows\n",data.length);
return false;
}
int cols= data[0].length;
for(int row = 0; row<data.length; row++)
{
int current_cols = data[row].length;
if(current_cols!=cols)
{
System.out.printf("Sanity Check: %d columns at rows%d\n", current_cols, row);
return false;
}
}

return true;
}
public static String[][] readSpreadsheet(String filename)
{
ArrayList<String> lines = readFile(filename);
if (lines == null)
{
return null;
}

int rows = lines.size();
String[][] result = new String[rows][];

for (int i = 0; i < rows; i++)
{
String line = lines.get(i);
String[] values = line.split(",");
result[i] = values;
}

return result;
}

public static ArrayList<String> readFile(String filename)
{
File temp = new File(filename);
Scanner input_file;

try
{
input_file = new Scanner(temp);
} catch (Exception e)
{
System.out.printf("Failed to open file %s\n",
filename);
return null;
}

ArrayList<String> result = new ArrayList<String>();
while (input_file.hasNextLine())
{
String line = input_file.nextLine();
result.add(line);
}

input_file.close();
return result;
}
}

input file:
First,Last,Exam1,Exam2,Final,H1,H2,H3,H4,H5,H6,H7
Ping,Milledge,43,59,68,69,62,43,60,38,37,40
Elisa,Oltz,76,94,73,100,99,100,90,97,100,92
Leonard,Havers,67,95,57,69,95,71,68,61,93,61
Setsuko,Lovera,78,100,84,89,88,92,65,85,66,97
Franklyn,Degnim,54,74,50,63,78,42,42,41,67,64
Gwyneth,Marsico,61,89,81,59,59,62,88,60,66,66
Abigail,Greep,69,99,93,94,91,85,78,91,69,71
Majorie,Granvold,78,100,100,82,96,100,89,100,100,94
Daphine,Polaco,62,82,88,81,68,89,62,73,90,62
An,Corvera,44,71,37,46,57,42,59,66,54,60
Ayanna,Pensiero,64,42,56,37,53,66,69,52,43,58
Era,Deming,98,81,100,69,65,73,77,78,73,89
Michal,Slentz,73,85,81,82,74,93,81,76,69,81
Corie,Brazen,86,99,66,100,69,97,96,100,70,84
Dona,Tufte,63,54,70,71,55,68,86,66,75,63
Juan,Rohdenburg,78,89,100,91,80,97,92,100,98,100
Orville,Samit,88,63,60,88,81,56,91,76,77,80
Ricky,Knoechel,100,100,93,81,100,90,100,92,100,84
Blythe,Threet,38,68,35,61,63,51,48,72,49,51
Sammie,Wachs,46,53,52,76,50,52,56,68,46,75
Estelle,Veazey,72,87,69,98,96,77,95,91,100,91
Agatha,Keckler,100,92,90,95,85,100,94,85,92,100
Novella,Oros,85,76,100,92,84,77,77,90,86,98
Tanya,Quinlisk,47,78,71,50,79,52,69,66,51,45
Marion,Coltrin,68,68,54,39,61,44,66,58,47,74
Helene,Karow,100,100,75,79,100,100,100,92,89,96
Shonta,Bourek,100,96,90,81,97,84,91,100,100,100
Hyon,Anglemyer,81,76,43,43,47,53,44,60,57,65
Ervin,Kenison,78,53,54,75,55,46,61,75,56,69
Renato,Urch,71,64,64,84,49,57,63,69,81,64
Mikel,Burleigh,88,100,90,100,90,91,90,80,74,74
Val,Royal,100,80,100,99,100,100,76,86,100,96
Jodie,Adolfo,94,77,59,83,67,79,87,82,82,75
Roselee,Lienhard,68,75,58,82,96,62,60,94,68,58
Austin,Holznecht,76,49,79,48,58,68,67,71,70,61
Emelia,Toney,70,95,74,90,99,68,100,66,98,98
Lucy,Rhodd,71,91,100,82,100,93,100,100,71,81
Sacha,Chee,78,71,90,82,74,64,62,87,69,84
Julio,Lackner,56,86,53,88,88,73,57,59,80,85
Salvador,Gretzner,54,83,91,66,78,67,61,84,82,6

export file(csv_name)
name,exam_score,hw_score,min_score,grade
Ping Milledge,56.666667,49.857143,49.857143,F
Elisa Oltz,81.000000,96.857143,81.000000,B
Leonard Havers,73.000000,74.000000,73.000000,C
Setsuko Lovera,87.333333,83.142857,83.142857,B
Franklyn Degnim,59.333333,56.714286,56.714286,F
Gwyneth Marsico,77.000000,65.714286,65.714286,D
Abigail Greep,87.000000,82.714286,82.714286,B
Majorie Granvold,92.666667,94.428571,92.666667,A
Daphine Polaco,77.333333,75.000000,75.000000,C
An Corvera,50.666667,54.857143,50.666667,F
Ayanna Pensiero,54.000000,54.000000,54.000000,F
Era Deming,93.000000,74.857143,74.857143,C
Michal Slentz,79.666667,79.428571,79.428571,C
Corie Brazen,83.666667,88.000000,83.666667,B
Dona Tufte,62.333333,69.142857,62.333333,D
Juan Rohdenburg,89.000000,94.000000,89.000000,B
Orville Samit,70.333333,78.428571,70.333333,C
Ricky Knoechel,97.666667,92.428571,92.428571,A
Blythe Threet,47.000000,56.428571,47.000000,F
Sammie Wachs,50.333333,60.428571,50.333333,F
Estelle Veazey,76.000000,92.571429,76.000000,C
Agatha Keckler,94.000000,93.000000,93.000000,A
Novella Oros,87.000000,86.285714,86.285714,B
Tanya Quinlisk,65.333333,58.857143,58.857143,F
Marion Coltrin,63.333333,55.571429,55.571429,F
Helene Karow,91.666667,93.714286,91.666667,A
Shonta Bourek,95.333333,93.285714,93.285714,A
Hyon Anglemyer,66.666667,52.714286,52.714286,F
Ervin Kenison,61.666667,62.428571,61.666667,D
Renato Urch,66.333333,66.714286,66.333333,D
Mikel Burleigh,92.666667,85.571429,85.571429,B
Val Royal,93.333333,93.857143,93.333333,A
Jodie Adolfo,76.666667,79.285714,76.666667,C
Roselee Lienhard,67.000000,74.285714,67.000000,D
Austin Holznecht,68.000000,63.285714,63.285714,D
Emelia Toney,79.666667,88.428571,79.666667,C
Lucy Rhodd,87.333333,89.571429,87.333333,B
Sacha Chee,79.666667,74.571429,74.571429,C
Julio Lackner,65.000000,75.714286,65.000000,D
Salvador Gretzner,76.000000,71.714286,71.714286,C

export file 2(pretty_name)
name: exam score, hw score, min score, grade
Ping Milledge: 56.67, 49.86, 49.86, F
Elisa Oltz: 81.00, 96.86, 81.00, B
Leonard Havers: 73.00, 74.00, 73.00, C
Setsuko Lovera: 87.33, 83.14, 83.14, B
Franklyn Degnim: 59.33, 56.71, 56.71, F
Gwyneth Marsico: 77.00, 65.71, 65.71, D
Abigail Greep: 87.00, 82.71, 82.71, B
Majorie Granvold: 92.67, 94.43, 92.67, A
Daphine Polaco: 77.33, 75.00, 75.00, C
An Corvera: 50.67, 54.86, 50.67, F
Ayanna Pensiero: 54.00, 54.00, 54.00, F
Era Deming: 93.00, 74.86, 74.86, C
Michal Slentz: 79.67, 79.43, 79.43, C
Corie Brazen: 83.67, 88.00, 83.67, B
Dona Tufte: 62.33, 69.14, 62.33, D
Juan Rohdenburg: 89.00, 94.00, 89.00, B
Orville Samit: 70.33, 78.43, 70.33, C
Ricky Knoechel: 97.67, 92.43, 92.43, A
Blythe Threet: 47.00, 56.43, 47.00, F
Sammie Wachs: 50.33, 60.43, 50.33, F
Estelle Veazey: 76.00, 92.57, 76.00, C
Agatha Keckler: 94.00, 93.00, 93.00, A
Novella Oros: 87.00, 86.29, 86.29, B
Tanya Quinlisk: 65.33, 58.86, 58.86, F
Marion Coltrin: 63.33, 55.57, 55.57, F
Helene Karow: 91.67, 93.71, 91.67, A
Shonta Bourek: 95.33, 93.29, 93.29, A
Hyon Anglemyer: 66.67, 52.71, 52.71, F
Ervin Kenison: 61.67, 62.43, 61.67, D
Renato Urch: 66.33, 66.71, 66.33, D
Mikel Burleigh: 92.67, 85.57, 85.57, B
Val Royal: 93.33, 93.86, 93.33, A
Jodie Adolfo: 76.67, 79.29, 76.67, C
Roselee Lienhard: 67.00, 74.29, 67.00, D
Austin Holznecht: 68.00, 63.29, 63.29, D
Emelia Toney: 79.67, 88.43, 79.67, C
Lucy Rhodd: 87.33, 89.57, 87.33, B
Sacha Chee: 79.67, 74.57, 74.57, C
Julio Lackner: 65.00, 75.71, 65.00, D
Salvador Gretzner: 76.00, 71.71, 71.71, C

最佳答案

这样就可以了,如果您对代码有疑问,请询问。

public static void processGrades (String input_name, String csv_name, String pretty_name) {
DecimalFormat decimalFormat = new DecimalFormat(".000000");

String[][] data = readSpreadsheet(input_name);
String[][] result = new String[data.length][];
result[0] = new String[]{"name", "exam_score", "hw_score", "min_score", "grade"};

// Export to 2D String array
for(int row = 1; row < data.length; row++) {
String name = data[row][0] + " " + data[row][1];
double testAverage = average(data[row], 2, 5);
double homeworkAverage = average(data[row], 5, 12);
double min = Math.min(testAverage, homeworkAverage);
char grade = (char) (74 - ((int) min / 10));
grade = grade > 'D' ? 'F' : grade;

result[row] = new String[]{
name,
decimalFormat.format(testAverage),
decimalFormat.format(homeworkAverage),
decimalFormat.format(min),
Character.toString(grade)
};
}

// Export 2D array into a csv String
String csv = "";
for (int y = 0; y < result.length; y++) {
for (int x = 0; x < result[y].length - 1; x++) {
csv += result[y][x] + ",";
}
csv += result[y][result[y].length - 1] + "\n";
}

// Save String in file
File file = new File(csv_name);
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile()));
bw.write(csv);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}

private static double average(String[] row, int fromIndex, int toIndex) {
double total = 0;
for (int i = fromIndex; i < toIndex; i++) {
total += Integer.parseInt(row[i]);
}
return total / (toIndex - fromIndex);
}

关于java - 如何将字符串输入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41029940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com