我正在试图找出这个小问题:用户输入他/她想要的标记数量,但是一旦输入小于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。如果我错了,有人可以纠正我吗?此外,一旦我将数值添加到数组中,我将如何找到其中的最大数字?
答案 0 :(得分:2)
mark
是int
,您的列表会保存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);