从一行打印编号

时间:2018-01-20 19:02:05

标签: java arrays algorithm

我是编程新手,似乎无法解决这个问题。任何帮助表示赞赏,我目前显示的是我的代码。非常感谢你的进步。

第一行输入包含要遵循的行数

  • 每行的第一个数字n >= 2包含该行后面的整数数
  • 那些n个整数(每个整数>= 0; <= 1000)跟在行的末尾,应该使用索引号1...n - 1
  • 存储在数组中(最后一个除外)
  • 行中的最后一个整数p(p >= 1 & p <= n - 1)是从行中选择的整数的索引(从1开始)并打印
到目前为止

代码:

public static void main(String[] args) {
    // Scanner to take the inputs
    Scanner input = new Scanner(System.in);

    // Variables
    int numOfLines;
    int di = 0;
    int n;

    // The arrays to store the results
    int[] data = new int[100];
    int[] result = new int[100];

    System.out.println("**Input**");
    // Read number of lines to follow
    numOfLines = input.nextInt();
    while (di < numOfLines) {
        // Read first integer of each line
        n = input.nextInt();
        // Store n-1 integers to array
        for (int dj = 1; dj <= n - 1; dj++) {
            data[dj] = input.nextInt();
        }
        // Multiply selected numbers and store to array
        result[di] = data[dj];
        di++;
    }
}

1 个答案:

答案 0 :(得分:0)

你说你无法绕过这个问题。首先要做的是在编码之前清楚地理解问题。为了更清楚,在每一行,用户将输入如下内容:

4 500 600 700 1
  • 第一个数字表示它后面有多少个数字。你在这里看到有四个跟着它。
  • 最后一个数字表示要打印的索引。你看到第一个号码是想要的。
  • 中间的数字是可以选择的数字。

所以,输出应该是中间的第一个数字,即500,所以输出应该是这样的:

The number is: 500

根据您的规范,您的代码存在一些问题:

  1. data数组在源代码中不能具有固定大小(如100),因为如果您为其选择固定大小,则用户始终可以选择包含更多数字的行它比data数组可以容纳。您应该在每行输入的开头用新的正确大小的数组替换data
  2. 不需要result数组,因为您只需要立即打印出所需的数字,而无需将其存储起来。
  3. // Multiply selected numbers and store to array是一个不正确的评论,应删除。
  4. 您需要添加一行代码,以输入在该行输入的最后一个数字作为所需索引。
  5. 您需要在data
  6. 中打印出所需索引处的数字

    我建议,为了学习,

    1. 花时间了解问题
    2. 清楚了解为何需要进行这些更改
    3. 进行更改
    4. 检查事情是否正常
    5. 从头开始练习(在一个新的源代码文件中,这样你就不会删除你的工作版本),你会更好地理解并看看你是否可以在没有帮助的情况下让它工作