好的,这是我的代码:
import java.util.Scanner;
public class Bubble {
public static void main(String[] args) {
String prefix;
int arr[];
Scanner reader = new Scanner(System.in);
System.out.println("What size would you like your array to be?");
int arrSize = reader.nextInt();
arr = new int[arrSize];
for(int i = 1; i==arrSize; i++) {
if((i % 10)==1 && i != 11) {
prefix = "st";
}else if((i % 10)==2 && i != 12) {
prefix = "nd";
}else if((i % 10)==3 && i != 13) {
prefix = "rd";
}else{
prefix = "th";
}
System.out.println("What would you like the"+ i + prefix +"number in the array to be?");
int arrNum = reader.nextInt();
}
System.out.println(arr);
}
}
现在当我按下跑步时,我得到了这个:
您希望阵列的大小是多少?
然后我输入一个整数,比如3,然后我得到了这个:
[I @ 55f96302
无论我使用什么整数,它都保持不变。
答案 0 :(得分:2)
使用Arrays.toString()
。这是您遇到的问题的a great writeup。通过编写System.out.println(arr);
,您将打印数组的默认字符串表示形式。请检查此answer。
据我所知,您试图允许用户使用arrSize
创建一个数组,然后允许他将值放入数组中。但是,您的代码存在一些问题:
1 - 您的for循环中的条件永远无法验证arrSize != 1
。
2 - 要将值保存在已定义的数组中,您应该将从扫描程序arrNum
读取的值分配给数组位置i-1
(以避免ArrayIndexOutOfBoundsException)。
3 - 不要忘记关闭扫描仪。这非常重要,因为如果不关闭程序,它可能会在程序执行期间导致内存泄漏。
您可以在下面找到对代码的修改。
import java.util.Arrays;
import java.util.Scanner;
public class Bubble {
public static void main(String[] args) {
String prefix;
int arr[];
Scanner reader = new Scanner(System.in);
System.out.println("What size would you like your array to be?");
int arrSize = reader.nextInt();
arr = new int[arrSize];
for(int i = 1; i<=arrSize; i++) {
if((i % 10)==1 && i != 11) {
prefix = "st";
}else if((i % 10)==2 && i != 12) {
prefix = "nd";
}else if((i % 10)==3 && i != 13) {
prefix = "rd";
}else{
prefix = "th";
}
System.out.println("What would you like the "+ i + prefix +" number in the array to be?");
int arrNum = reader.nextInt();
arr[i-1] = arrNum;
}
reader.close();
System.out.println(Arrays.toString(arr));
}
}