将值添加到Array中并在java中找到最大的值

时间:2012-11-29 14:19:19

标签: java arrays

我正在试图找出这个小问题:用户输入他/她想要的标记数量,但是一旦输入小于0或大于100的标记,程序应该停止并找出最大的标记形式输入

我正在考虑获取所有标记并将它们添加到数组中(然后我发现使用ArrayList更好,所以我用它来代替)。

这是我到目前为止所得到的:

import java.util.*;

...
Scanner input = new Scanner(System.in);
System.out.println("Enter your mark:");

int mark = input.nextInt();
List<String> list = new ArrayList<String>();
while (mark >= 0 && mark <= 100)
{
    list.add(mark);
}

list.add(mark);给我一个错误,说找不到类似添加int的方法。

我是java的新手,我不确定我是否正确理解了arrayList。如果我错了,有人可以纠正我吗?此外,一旦我将数值添加到数组中,我将如何找到其中的最大数字?

7 个答案:

答案 0 :(得分:2)

markint,您的列表会保存String。你可以把它改成这个

List<Integer> list = new ArrayList<Integer>();
if (mark >= 0 && mark <= 100) {
    list.add(mark);
}

让它发挥作用。

但是你有一个无限循环 !!将while更改为if以解决此问题。

答案 1 :(得分:1)

首先,您要声明ArrayList字符串: -

List<String> list = new ArrayList<String>();

你要为它添加一个整数。编译器会哭出来。将您的List声明为List<Integer>


其次,每次在List中输入内容时,最好保持最大值,以避免以后在search上使用List

所以,我会将你的代码修改为: -

    int maximum = -1;
    int mark = input.nextInt();

    List<Integer> list = new ArrayList<Integer>();
    if (mark >= 0 && mark <= 100) {

        if (maximum < mark) {
            maximum = mark;
        }

        list.add(mark);
    }

现在我留给您将if转换为do-while循环,以便继续向用户询问标记。

答案 2 :(得分:1)

对于列表,您可以在< >

中定义您拥有的项目类型

更改

List<String> list = new ArrayList<String>();

List<Integer> list = new ArrayList<Integer();

答案 3 :(得分:1)

    List<Integer> list = new ArrayList<Integer>();
    do {
       try
       {
         Integer mark = input.nextInt(); //get your input in the loop
         list.add(mark);
       }
       catch(NumberFormatException exception) 
       {
          exception.printStackTrace() ;
       }
    }while (mark >= 0 && mark <= 100);

在循环中获取输入,您可能希望使用do while循环,以便它至少运行一次。还假设用户是恶意的并且会使您的程序崩溃。所以使用try catch block为这种情况做好准备。我刚刚使用printStackTrace但显示了更好的错误消息。

答案 4 :(得分:0)

定义列表时,将其定义为类型,然后将原始int添加到列表中。你需要确保这些匹配。

答案 5 :(得分:0)

以下是您需要做的更正:

1.您正在尝试创建一个整数列表,但是您要声明字符串列表。您需要在声明中使用Integer(整数的包装类)。列表不能与基本类型一起使用。

List<Integer> list = new ArrayList<Integer>();

2.您只需输入一次并在循环的检查条件下使用它,因为如果输入标记满足条件,循环将连续运行。您需要做的是在您的内部放置一个输入语句循环。

    Scanner input = new Scanner(System.in);
    System.out.println("Enter your mark:");
    int mark = input.nextInt();
    int max=-1;
    while (mark >= 0 && mark <= 100) {
        list.add(mark);
         if (max < mark) {
        max = mark;
    }

      System.out.println("Enter your mark:");
         mark = input.nextInt();
    }

答案 6 :(得分:0)

要求:用户输入他/她想要的标记数量,但是一旦输入小于0或大于100的标记,程序应该停止并找出输入的最大标记形式。

为什么要使用阵列?如果您不需要使用数组,那么此代码片段将完成这项工作......

String instr;
int val, maxval = 0;
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
while ((instr = input.readLine())!=null) { 
    val = Integer.parseInt(instr);
    if (val < 0 || val > 100) break;
    maxval = Math.max(maxval, val);
}
input.close();
System.out.println(maxval);