我试图在1000个可能的插槽数组中找到最小的数字但是我的代码仍然返回0,即使0不是我的输入之一。我的问题是在最后一个for循环中,其余的代码工作。这是我的代码:
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class SmallestNumber
{
public static boolean isInteger(String num)
{
boolean again=false;
try
{
int d= Integer.parseInt(num);
again=true;
}
catch(NumberFormatException e)
{
again=false;
}
return again;
}
public static void main(String[] args)
{
int [] intNum = new int[1000];
int i=0;
String num;
boolean repeat = false;
String done="done";
Scanner inData = new Scanner(System.in);
System.out.println("You can enter up to 1000 integers." + "\n" + "Enter 'done' to finish");
while (!repeat)
{
System.out.print("Int: ");
num=inData.next();
repeat=isInteger(num);
if (repeat==false)
{
String entry=num.toUpperCase();
boolean equals=entry.equals("DONE");
if (equals==true)
{
repeat=true;
}
else
{
System.out.println("Error: you did not enter a valid chracter. Please enter a interger or state 'done'");
repeat=false;
}
}
else
{
int number=Integer.parseInt(num);
intNum[i]=number;
i=i+1;
if(i<1000)
{
repeat=false;
}
else
{
repeat=true;
}
}
}
int temp=intNum[0];
for(int j=1;j<intNum.length;j++)
{
if (intNum[j]<temp)
{
intNum[j]=temp;
}
else
{
}
}
System.out.print(temp);
}
}
答案 0 :(得分:1)
您没有说明实际输入了多少个整数,但问题是您正在迭代intnum.length
次。您已将输入字段声明为1000个元素的数组,length
将始终为1000,即使用户输入的整数较少。一旦你的代码飞过了你实际输入的整数,它就会达到数组初始化的0。
答案 1 :(得分:0)
过程:
ArrayList
的{{1}} 您的其他所有内容都不适合此过程,或者不合适或不需要。
<强>更新强>:
Integers
这完全是标题所暗示的,没有所有额外内容。大卫华莱士建议这可能是矫枉过正的。我不确定是不是。没有时间进行基准测试。我明天要去旅行。也许有人可以评论它。
答案 2 :(得分:0)
嗨我通过将循环结束长度更改为i并切换
来解决问题intNum[j]=temp;
到
temp=intNum[j];
再次感谢