将数组作为参数传递;使用Scanner类在Java中使用用户输入设置Array



我正在尝试接受用户输入,将其放入我的数组中,显示数组,然后打印所有大于用户提供的"n"值的值。我认为我已经接近了,但我无法获得进入数组的用户输入。当我调用方法(最底部的main(时,我在eclipse中不断收到错误,"arrayValues">无法解析为变量

import java.util.Arrays;

import java.util.Scanner;

public class LargerThanN {

//initialize n
static int n;
static int arraySize;
//setup the array
static int [] integerArray = new int [] {};
public static void printGreaterThanN(int[] integerArray, int n) {
for (int i = 0; i < integerArray.length; i++) {
if (integerArray[i]>n) { 
System.out.println(integerArray[i]);
}
} 
}
public static int[] fillArrayWithUserInt() {
Scanner sc = new Scanner(System.in);
System.out.println("How big will the array be?");
int arraySize = sc.nextInt();
sc.nextLine(); // clears rest of input, including carriage return
int[] integerArray = new int[arraySize];
System.out.println("Enter the " + arraySize + " numbers now.");
for (int i = 0; i < integerArray.length; i++) {
integerArray[i] = sc.nextInt();
}
return integerArray;
}


/**
* This method prints the array to the standard output
* @param array
*/
private static void displayArray( int[] integerArray) {
for (int i = `0; i < integerArray.length; i++) {
System.out.print(integerArray[i] + " ");
}
}   

public static void main(String[] args) {

int [] array ;
array = fillArrayWithUserInt();
Scanner sc = new Scanner(System.in);
fillArrayWithUserInt();
displayArray(array);
System.out.println("To which number would you like to compare the rest? Your n value is: ");
n = sc.nextInt();
printGreaterThanN(array, n); 

但现在我的输出看起来像:

阵列有多大?

4

现在输入4个数字。

1 2 3 4

阵列有多大?

3

现在输入3个数字。

1 2 3

1 2 3 4

你想把其余的数字与哪个比较?您的n值为:

2

3

4

请注意,以下代码在java中没有任何作用。。。

public void set(int n, int value) {
n = value;
}

在许多应该返回值的函数中,您似乎都编写了这样的代码。

例如,函数定义:

static void fillArrayWithUserInt(int[] integerArray, int arraySize, int arrayValues, int n)

真的应该写成:

static int[] fillArrayWithUserInt()

它可以实现如下

public static int[] fillArrayWithUserInt() {
Scanner sc = new Scanner(System.in);
System.out.println("How big will the array be?");
int arraySize = sc.nextInt();
sc.nextLine(); // clears rest of input, including carriage return
int[] integerArray = new int[arraySize];
System.out.println("Enter the " + arraySize + " numbers now.");
System.out.println("What are the numbers in your array?");
for (int i = 0; i < integerArray.length; i++) {
integerArray[i] = sc.nextInt();
}
return integerArray;
}

上面的函数将询问用户数组的大小。创建给定大小的数组。然后提示用户使用正确数量的值填充数组。然后返回在此过程中创建的数组。

你现在所要做的就是找到可比较的价值。这必须在fillArrayWithUserInt函数之外完成。

像这样:

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] array = fillArrayWithUserInt();
displayArray(array);
System.out.println("To which number would you like to compare the rest? Your n value is: ");
int n = sc.nextInt();
printGreaterThanN(array, n);
}

最后,您不需要在类的顶部声明任何静态变量。

这些行都可以删除:

//initialize n
static int n;
static int arraySize;
//setup the array
static int [] integerArray = new int [] {};

下面是我的解决方案。

import java.util.Scanner;
public class LargerThanN {
static int[] integerArray = null;
static int n ;
public static void printGreaterThanN() {
for (int i = 0; i < integerArray.length; i++) {
if (integerArray[i] > n) {
System.out.println(integerArray[i]);
}
}
}
public static void fillArrayWithUserInt() {
Scanner sc = new Scanner(System.in);
System.out.println("How big will the array be?");
int arraySize = sc.nextInt();
sc.nextLine(); // clears rest of input, including carriage return
integerArray = new int[arraySize];
System.out.println("Enter the " + arraySize + " numbers now.");
System.out.println("What are the numbers in your array?");
for (int i = 0; i < integerArray.length; i++) {
integerArray[i] = sc.nextInt();
}
System.out.println("To which number would you like to compare the rest? Your n value is: ");
n = sc.nextInt();
}
/**
* This method prints the array to the standard output
* 
* @param array
*/
private static void displayArray() {
for (int i = 0; i < integerArray.length; i++) {
System.out.print(integerArray[i] + " ");
}
}
public static void main(String[] args) {
fillArrayWithUserInt();
displayArray();
printGreaterThanN();
}
}

最新更新