我是java编程的新手,正在进行一项练习,用户将int输入到数组中,然后通过输入负int值来停止用户输入。一切都很好,除了数组在用户输入之外输出0。因此,如果用户输入5个值然后输入一个负值,则只打印五个值而不是用户输入值和95个。
非常感谢任何协助。
这是我的代码:
public static void main (String str[]) throws IOException {
Scanner scan = new Scanner (System.in);
int array[] = new int [100];
System.out.println ("Enter values up to 100 values, " +
"enter a negative number to quit");
for (int i=0; i< array.length; i++)
{
array[i] = scan.nextInt();
if (array [i] < 0)
{
break;
}
}
for (int i =0; i<array.length; i++)
{
System.out.println(array[i]);
}
}
答案 0 :(得分:0)
无论最后一个循环是什么,你都会循环100次,无论输入什么,你都在保存用户输入。
为了实现你想要的。声明一个新的整数enteredValues
来计算用户在退出之前输入的值。
public static void main(String str[]) throws IOException {
Scanner scan = new Scanner(System. in );
int array[] = new int[100];
System.out.println("Enter values up to 100 values, " +
"enter a negative number to quit");
int enteredValues = 0;
for (int i = 0; i < array.length; i++) {
int userInput = scan.nextInt(); //save nextInt to a variable
if (userInput >= 0) {
array[i] = userInput;
enteredValues++;
} else{
break;
}
}
for (int i = 0; i < enteredValues; i++) {
System.out.println(array[i]);
}
}
答案 1 :(得分:0)
当您在int
中声明Java
时,如果您没有为其指定值,则默认为0。声明数组时,
int array[] = new int [100];
你实际上是在制作一个100 0的数组。您可以通过运行以下代码来查看一个小示例:
public static void main(String[] args) throws Exception {
int array[] = new int [1];
System.out.println("The value of i is: " + array[0]);
}
您可以做的是将负值存储到数组中,然后在达到该值时停止打印。
for (int i =0; i<array.length; i++){
if(array[i]<0){
break;
}
System.out.println(array[i]);
}
答案 2 :(得分:0)
public static void main (String str[]) throws IOException {
Scanner scan = new Scanner (System.in);
int array[] = new int [100];
int totalValuesEntered = 0;
System.out.println ("Enter values up to 100 values, " +
"enter a negative number to quit");
for (int i=0; i< array.length; i++)
{
array[i] = scan.nextInt();
if (array[i] < 0)
{
totalValuesEntered = i;
break;
}
}
System.out.println("Your entries are:");
for (int i =0; i<totalValuesEntered; i++)
{
System.out.println(array[i]);
}
}