返回的值工作不正常?(基础Java)

返回的值工作不正常?(基础Java),java,Java,在这个程序中,我必须有变量(N)的用户输入值。在方法1中,用户将在一个数组中输入10个数字。在方法2中,它将比较变量(N)并将所有大于该变量的数字保存到(greaterNums)变量。尽管我已经一遍又一遍地读了这一章,但我还是遇到了一些退货和寄送问题。有人请给我指出正确的方向 问题1:greaterNums变量值在方法2中的参数之后不正确。 问题2:greaterNums变量未返回要显示的主方法 import javax.swing.JOptionPane; public class Proj

在这个程序中,我必须有变量(N)的用户输入值。在方法1中,用户将在一个数组中输入10个数字。在方法2中,它将比较变量(N)并将所有大于该变量的数字保存到(greaterNums)变量。尽管我已经一遍又一遍地读了这一章,但我还是遇到了一些退货和寄送问题。有人请给我指出正确的方向

问题1:greaterNums变量值在方法2中的参数之后不正确。 问题2:greaterNums变量未返回要显示的主方法

import javax.swing.JOptionPane;

public class Project6Walker
{
    public static void main(String[] args)
    {
        final int ARRAY_SIZE = 10;        //Establish array size
        int n;                            //Holds comparable value
        String input;                     //Holds user input

        int[] array = new int[ARRAY_SIZE]; //Establishes array

        input = JOptionPane.showInputDialog("Enter a number. Must not be a negative number.");
        n = Integer.parseInt(input);     //Gather value N

        while (n < 0)           //INPUT VALIDATION for N
        {
            input = JOptionPane.showInputDialog("Must not be a negative number. Please try again.");
            n = Integer.parseInt(input);
        }

        gatherArrayInformation(array, input);             //Calls method 1
        compareArrayInformation(array, n);                //Calls method 2
        JOptionPane.showMessageDialog(null, "The numbers in the array that are "+
                "greater than " +n+ " are (greaterNums goes here).");  //Final output of information

        /**
          This method will prompt the user to enter 10 numbers in the array
          that will be compared to the value N
         */
    }

    public static int[] gatherArrayInformation(int[] array, String input)
    {
        JOptionPane.showMessageDialog(null, "Enter series of " + array.length + "  numbers");
        for (int i= 0; i < array.length; i++)
        {
            input = JOptionPane.showInputDialog("Number " + (i + 1) + ":");
            array[i] = Integer.parseInt(input);

            while (array[i] < 0)
            {
                input = JOptionPane.showInputDialog("Number " + (i + 1) + " cannot be negative.      Try     Again.");
                array[i] = Integer.parseInt(input);
            }
            System.out.print(array[i] + " ");
        }
        return array;
    }

    /**
      This method will take the 10 numbers from method 1,
      and see which numbers are larger than N
      @return greaterNums
     */
    public static int compareArrayInformation(int[] array, int n)
    {
        int greaterNums = 0;
        for (int i= 1; i < array.length; i++)
        {
            if (array[i] > n)
                greaterNums = array[i];
            System.out.println(greaterNums);
        }
        return greaterNums;
    }
}
import javax.swing.JOptionPane;
公共类项目6
{
公共静态void main(字符串[]args)
{
final int ARRAY_SIZE=10;//建立数组大小
int n;//保存可比较的值
字符串输入;//保存用户输入
int[]数组=新的int[array_SIZE];//建立数组
input=JOptionPane.showInputDialog(“输入一个数字,不能是负数”);
n=Integer.parseInt(输入);//收集值n
while(n<0)//n的输入验证
{
input=JOptionPane.showInputDialog(“不能是负数,请重试”);
n=整数.parseInt(输入);
}
gatherArrayInformation(数组,输入);//调用方法1
comparararayInformation(数组,n);//调用方法2
showMessageDialog(null,“数组中的数字”+
“大于“+n+”的是(此处为greaterNums)。”;//信息的最终输出
/**
此方法将提示用户在数组中输入10个数字
这将与值N进行比较
*/
}
公共静态int[]gatherArrayInformation(int[]数组,字符串输入)
{
showMessageDialog(null,“输入”+array.length+“数字”系列);
for(int i=0;in)
greaterNums=数组[i];
System.out.println(greaterNums);
}
返回大整数;
}
}

问题2:当您返回greaterNums时,正如您的代码当前所示,它只返回索引大于n的数组成员

数组索引从0开始

public static List<Integer> compareArrayInformation(int[] array, int n)
{
    List<Integer> greaterNums = new ArrayList<>();
    for (int i = 0; i < array.length; i++) // Count from 0
    {
        if (array[i] > n) {
            int greaterNum = array[i];
            System.out.println(greaterNum);
            greaterNums.add(greaterNum);
        }
     }
     return greaterNums;
}
公共静态列表CompararrayInformation(int[]数组,int n)
{
List greaterNums=new ArrayList();
对于(int i=0;in){
int greaterNum=数组[i];
System.out.println(greaterNum);
greaterNums.add(greaterNum);
}
}
返回大整数;
}

为了收集所有较大的数字,最好不要使用固定大小的数组,
int[]
,而是一个
列表

这个程序将在i设置为0时工作,而不是1,但它当然只会显示最后一个较大的数字,而不是nums,希望这是您想要的

 public static int compareArrayInformation(int[] array, int n)
{
int greaterNums = 0;

for (int i= 0; i < array.length; i++)//not one 
 {
 if (array[i] > n)

    greaterNums = array[i];
    System.out.println(greaterNums);

 }
 return greaterNums;
 }
公共静态整数比较数组信息(int[]数组,int n)
{
int greaterNums=0;
for(int i=0;in)
greaterNums=数组[i];
System.out.println(greaterNums);
}
返回大整数;
}
也许你想要这个

 public static int[] compareArrayInformation(int[] array, int n)
{
int[] greaternums=new int[array.length];
int upto=0;

for (int i= 0; i < array.length; i++)//not one 
 {
 if (array[i] > n)

    greaternums[upto] = array[i];
    System.out.println(array[i]);
    upto++;
 }
 return Arrays.copyOf(greaternums, upto);
 }
公共静态int[]comparararrayinformation(int[]array,int n)
{
int[]greaternums=newint[array.length];
int高达=0;
for(int i=0;in)
greaternums[upto]=数组[i];
System.out.println(数组[i]);
高达++;
}
返回数组.copyOf(greaternums,最多);
}

替换您的功能
将arrayInformation
与下面进行比较

public static int compareArrayInformation(int[] array, int n)
{
  int[] greaterNums = new int[10];  

  for (int i= 0; i < array.length; i++)
   {
     if (array[i] > n)
      { 
      greaterNums.add(array[i]);
      }

   }
  return greaterNums;
}

欢迎来到堆栈溢出。请花一点时间愉快地格式化代码,调整缩进,并尽量避免读者水平滚动。目前,由于缺乏适当的缩进,代码很难阅读。接下来,为我们提供示例输入、预期输出和实际输出-否则我们将不知道如何重现问题。在comparararayinformation()中,任何大于n的值都被分配给greaterNums,覆盖任何先前大于n的值。因此,在打印所有大于n的值时,只返回数组中大于n的最后一个值。您可能希望将这些值添加到数组中并返回所有值。您当前有:for(int i=1;iint[] greaterNumsArray = compareArrayInformation(array, n); StringBuffer sBuffer = new StringBuffer(""); for (int i=0; i<greaterNumsArray.length; i++){ sBuffer.append(greaterNumsArray[i]); } JOptionPane.showMessageDialog(null, "The numbers in the array that are "+ "greater than " +n+ " are "+sBuffer );