有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将值添加到数组中,并在java中查找最大值

我试图解决这个小问题:用户输入他/她想要的任意多的分数,但一旦输入了小于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。如果我错了,有人能纠正我吗?另外,一旦我对向数组中添加值的问题进行排序,我将如何在其中找到最大的数字


共 (6) 个答案

  1. # 1 楼答案

    对于列表,您可以定义< >中包含的项目类型

    改变

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

    List<Integer> list = new ArrayList<Integer();
    
  2. # 2 楼答案

    mark是一个int,您的列表保存String。你可以换成这个

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

    让它发挥作用

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

  3. # 3 楼答案

    要求:用户输入他/她想要的分数,但一旦输入了小于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);
    
  4. # 4 楼答案

        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,但显示了一条更好的错误消息

  5. # 5 楼答案

    定义列表时,将其定义为类型,然后向列表中添加一个基元int。你需要确保这些匹配

  6. # 6 楼答案

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

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

    你要给它加一个整数。我会为此大声疾呼的。将你的List声明为List<Integer>


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

    因此,我将修改您的代码:

        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循环,以便继续向用户询问分数