【问题标题】:How to take input array of N elements without defining size in java如何在Java中不定义大小的情况下获取N个元素的输入数组
【发布时间】:2021-06-15 13:37:42
【问题描述】:

输入:在输入中,会有一个N元素的数组

输出:输出将是其左右子数组之和的数字。

示例 输入: 2 3 5 20 5 3 2

输出: 20

输入: 5 10 20 122 30 12 9 36

输出: 122

任何人都可以解释这个问题将如何解决,因为我正在应用逻辑,因为输出将是数组的中间元素,但这是真正的逻辑。此外,为了在运行时增加数组的大小,我们可以使用 ArrayList,但是任何人都可以建议代码如何声明它。谢谢。

【问题讨论】:

  • 我觉得他/她只需要逻辑编程语言没关系。
  • 分而治之:将您尝试解决的大而复杂的问题拆分为更小、更简单的子问题。继续把这个划分成更小更简单的子问题,直到没有一个可以被划分。然后一个一个地解决每个小问题,然后是非常简单的问题。把它们放在一起解决更大更复杂的子问题,直到你解决了原来的复杂问题。
  • 除此之外,请花一些时间刷新the help pages,尤其是"What topics can I ask about here?""What types of questions should I avoid asking?"。也可以通过tour 阅读How to Ask 好问题和this question checklist。最后不要忘记如何创建minimal reproducible example
  • 如何声明ArrayList? SO不是你来的地方,让别人可以为你做功课。我很确定如果你用谷歌搜索:“arraylist java usage”你会得到很多有用的结果。

标签: java arrays arraylist dynamic-memory-allocation


【解决方案1】:

我认为你必须只计算总和并从中减去数组中的每个数字,当从总和中减去第 i 个数字后再次给出第 i 个数字意味着这个数字等于所有其他左右子数组的总和

l=list(map(int,input().split(' ')))
x=sum(l)
y=0

for i in range(len(l)):
    y=x-l[i]
    if(y==l[i]):
        print(l[i])
        break;

【讨论】:

    【解决方案2】:

    您基本上需要找到等于其左右元素之和的元素。 下面的程序应该可以达到同样的效果。

    public class Sample {
        public static void main(String[] args) {
            int arr[] = { 5, 10, 20, 122, 30, 12, 9, 36 };
            for (int i = 0; i < arr.length; i++) {
                int temp = arr[i];
                int sum = 0;
                if (i == 0) {
                    // first element simple sum the right elements
                    for (int j = i + 1; j < arr.length; j++) {
                        sum += arr[j];
    
                    }
    
                } else {
                    // sum the right elements
                    for (int j = i + 1; j < arr.length; j++) {
                        sum += arr[j];
    
                    }
                    // sum the left elements
                    for (int j = i - 1; j >= 0; j--) {
                        sum += arr[j];
    
                    }
                    // check if sum of left and right elements equals element.
                    if (sum == arr[i]) {
                        System.out.println(arr[i]);
                        break;
                    }
                }
    
            }
    
        }
    }
    

    【讨论】:

    • 这段代码适用于声明的输入,但我想从用户那里获取输入,你能解释一下它将如何从用户那里获取。谢谢。
    • 可以使用java的scanner类。请找到包含可以修改以满足您的需要的示例的链接。 javatpoint.com/how-to-get-input-from-user-in-java
    • 在扫描器类中,我们必须定义数组大小以获取用户的输入,并且在 for 循环中我们也使用数组的大小。对于大小的自动递增,我们如何使用扫描仪类来实现呢?
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多