试图获得等于素数的对的总和

时间:2017-03-30 23:09:16

标签: java

我试图从用户那里得到四个输入,并尝试仅使用用户定义的方法找到等于素数的对。我还没到达最佳状态。但在那之前我遇到了一个问题。因此,检查总和我是否在名为sumPair6的方法中将其打印出来但它打印为零,因此总和为所有内容返回0。我不知道我在做什么错。我也摆脱了最初的0,但仍然没有工作

<form action="/apply-now/" enctype="multipart/form-data" id="applyForm" method="post" name="applyForm" class="form">
<input name="is_data_submitted" type="hidden" value="1"> 
<input name="listing_id" type="hidden" value="{$listing_id}">

MY FORM DATA

<button type="submit" id="submit" class="btn btn-warning">Apply now</button>

2 个答案:

答案 0 :(得分:0)

请注意,您正在打印sum1,这是在您打印时未设置的,它会重新调整默认值为0的值,快速修复是为了引用您在方法中求和的那个,但另一个修复就像我将在这里提出的那样做

要修复此代码,请执行类似

的操作
public static void main(String args[]) {
    input();
    sum1 = sumPair(num1, num2);
    sum2 = sumPair(num1, num3);
    sum3 = sumPair(num1, num4);
    sum4 = sumPair(num2, num3);
    sum5 = sumPair(num2, num4);
    sum6 = sumPair(num3, num4);
    // Prime(sum1,sum2,sum3,sum4,sum5,sum6,val1,stop);
}

然后

public static int sumPair(int num1, int num2) { // returns a sum of 2 numers
    return num1 + num2;
}

这是因为你总是添加2个整数,因此不需要超过1个函数。

<强>附加

重写了大部分类,使其更易于阅读和使用

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Prime {

    public static List<Integer> numbers = new ArrayList<>(); // a list of integers that was accepted, can be acced in the order they were added

    private static Scanner input = new Scanner(System.in);

    public static void main(String args[]) {
        int inputs = 4; // inputs wanted
        input(inputs); // gives the method the inputs wanted
        for(int i = 0; i < inputs; i++){ // for every entry in the list (notice that we add to the list in the input()
            for(int j = 0+i; j < inputs; j++) // again for every element (to sum all numbers), notice +i to prevent duplicates
            {
                if(i != j) // if the numbers aren't the same entry
                    // print the number returned from the sum function
                    System.out.println("sum of " + numbers.get(i)+ " and " + numbers.get(j) + ": " + sumPair(numbers.get(i), numbers.get(j)));
            }
        }
    }

    public static void input(int inputNumbers) {

        while(numbers.size() < inputNumbers){ // while there is more inputs needed
            System.out.print("Enter a positive integer: ");
            int num = input.nextInt();
            if(num > 0) // if the input is valid
                numbers.add(num);
            else // if the input is not valid
                while (num <= 0) { // while the input is not valid
                    System.out.print("Enter a positive integer: ");
                    num = input.nextInt(); // get the next int if it wasn't valid
                    if(num > 0) { // if the input gets valid
                        numbers.add(num);
                    }
                }
            System.out.println("Thank you.");
        }
    }

    public static int sumPair(int num1, int num2) { // sums 2 integers given to the method and returns the sum
        return num1 + num2;
    }
}

现在这不是一个完美的类,它只是简化了一些,但它应该告诉你如何搜索一个范围,以及如何重用一个函数,如果你有问题请在下面的评论中

输入1,2,3,4将打印

  

1和2:3的总和

     

1和3:4的总和

     

1和4:5的总和

     

2和3:5之和

     

2和4:6的总和

     

3和4:7的总和

答案 1 :(得分:0)

变量的范围仅在特定方法中。在input()中,你接受用户输入并将它们分配给你的变量,但是一旦执行线程从输入中输出,你的变量num1,num2等都有相同的预定义值(全0)。

您可以通过多种方式重新设计代码。一种简单的方法是从input()方法中调用sumpair方法,因此您只需要一个sumpair方法,它可以采用不同的num值。