【问题标题】:How do you put a string inside a 2d Array如何将字符串放入二维数组
【发布时间】:2015-06-28 18:07:22
【问题描述】:

我正在尝试编写一个轮询程序,该程序需要五个问题并将问题放在二维数组的行上。另外,我如何让程序计算一个人对该问题的评价次数。例如,如果五个人给出了 5 分,我将如何编写程序来计算评分并将其放在 2d 数组上。

这些是说明:

编写一个简单的轮询程序:

  • 允许用户从 1(最不重要)到 10(最重要)对五个社会意识问题进行评分;

  • 选择五个对您很重要的原因(例如,政治问题、全球环境问题)。使用一个 存储五个原因的维度数组主题(字符串类型); 要总结调查响应,请使用 5 行 10 列的二维数组响应(int 类型):

  • 每一行对应于主题数组中的一个元素。 当程序运行时,它应该要求用户对每个问题进行评分。 (5, 13) 范围内的人对调查做出了回应。然后让程序显示结果摘要,包括:

a) 一份表格报告,左侧有五个主题,顶部有 10 个评分,每列列出每个主题收到的评分数。

b) 在每一行的右侧,显示该问题的平均评分。

c) 哪个问题的总分最高?显示问题和总分。 d) 哪个问题的总分最低?显示问题和总分。

这是我的代码:

import java.util.Arrays;
import java.util.*;
public class Polling {
/**
 * @param args the command line arguments
 */
 public static String[] issues=new String[20];
public static void main(String[] args) {
  Scanner console=new Scanner(System.in);
   issues[0]="Global Warming";
   issues[1]="Earth Quakes";
   issues[2]="Stopping war";
   issues [3]="Equal Rights";
   issues[4]="Curing Cancer";
   int[][] polling =new int[5][10];
   Random rand=new Random();
   int random=rand.nextInt(9)+5;
   int poll=0;

   String polling2=Arrays.toString(polling);


   for(int i=1;i<random;i++){
       System.out.println("Person"+i);
       System.out.println("Rate these issues from 1-10");

       System.out.println(issues[0]);
       int zero=console.nextInt();
       System.out.println(issues[1]);
       int one=console.nextInt();
       System.out.println(issues[2]);
       int two=console.nextInt();
       System.out.println(issues[3]);
       int three=console.nextInt();
       System.out.println(issues[4]);
       int four=console.nextInt();


}
System.out.println();

【问题讨论】:

  • 您不能将String 放入int 数组中。只需使用内部逻辑来假设 polling 数组的索引 0 代表问题 [0] 的评级,polling 数组的索引 2 代表问题 [1] 的评级,依此类推。在总结时,您可以通过引用issues 数组来显示索引 0..4 的实际字符串内容。这是作业吗?
  • 是的,我很难弄清楚这一点

标签: java arrays string multidimensional-array


【解决方案1】:

像这样?:

public static final String[] ISSUES = {
    "Global Warming",
    "Earth Quakes",
    "Stopping war",
    "Equal Rights",
    "Curing Cancer",};

public static void main(String[] args) {
    Scanner console = new Scanner(System.in);
    Random rand = new Random();
    int pollings = rand.nextInt(9) + 5;
    int [][] rates= new int[pollings][ISSUES.length];
    for (int i = 0; i < pollings; i++) {
        System.out.println("Person" + i);
        System.out.println("Rate these issues from 1-10");
        for (int j = 0; j < ISSUES.length; j++) {
            System.out.println(ISSUES[j]);
            rates[i][j] = console.nextInt();
        }
    }


     // ADDED
    int minRating = Integer.MAX_VALUE;
    int maxRating = Integer.MIN_VALUE;
    int minRatingIndex = -1;
    int maxRatingIndex = -1;
    for (int i = 0; i < ISSUES.length; i++) {
        System.out.print(ISSUES[i]+":");
        int rating = 0;
        for (int j = 0; j < pollings; j++) {
            System.out.print("\t"+rates[j][i]);
            rating += rates[j][i];
        }
        double average = ((double)rating)/pollings;
        System.out.println("\tavr: "+average);
        if (rating < minRating ){
            minRating = rating;
            minRatingIndex = i;
        }
        if (rating > maxRating ){
            maxRating = rating;
            maxRatingIndex = i;
        }
    }
    System.out.println("Max points:\t"+ISSUES[maxRatingIndex]+":\t"+maxRating+" points");
    System.out.println("Min points:\t"+ISSUES[minRatingIndex]+":\t"+minRating+" points");

    System.out.println();
}

【讨论】:

  • 就不一样了,用我的方案,你想怎么算就怎么算。
  • 感谢您的帮助,但我在这段代码中遇到了错误
  • 初始化错误,尝试:int minRating = Integer.MAX_VALUE; int maxRating = Integer.MIN_VALUE;
  • 我认为问题出在 maxperson
  • 非常感谢。我整天都在研究这个问题,如果没有你,我不会完成它。
猜你喜欢
  • 2019-08-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 2021-01-28
相关资源
最近更新 更多