int[] arr1 = new int[4];
int[] arr2 = new int[2];
\\this is a method to scan the arrays
for (int i = 0; i < arr.length; i++) {
try {
if (input.hasNext()) {
arr[i] = input.nextInt();
}
} catch (Exception e) {
System.out.println("Finished!");
}
\\at the main function
System.arraycopy(arr1, 0, arr3, 0, arr1.length);
System.arraycopy(arr2, 0, arr3, arr1.length, arr2.length);
for (int i = 0; i < arr3.length; i++) {
System.out.print(arr3[i] + " ");
}
我修复了它,但结果是错误的...第一个数组输入是4 5 h,第二个数组是7 8 1。输出是4 5 0 0 7 8 ....我不希望零也是最后一个元素是搞乱
非常感谢你们!
答案 0 :(得分:3)
尝试,
while(input.hasNextInt())
input.nextInt();
}
答案 1 :(得分:0)
它正在工作,但每当用户输入一个字符给我一个 关于不匹配的错误,因为扫描输入是int类型和输入 键入的用户是类型字符。
原因是,只要输入字符或字符串数据类型不同,就会将输入作为整数。因为编译器会给你InputMismatchException
。
因此,这些类型的错误称为运行时错误。您可以使用throws
关键字或使用try
- catch
块来处理这些问题。对于这些类型的程序,try-catch块很好。
解决方案:
从以下关键字中包装您的用户输入:
try{
if(input.nextInt()!='a')
{
arr[i] = input.nextInt();
}
}catch(InputMismatchException e){
//here you can get error message using 'e' or you can print custom error as your wish.
System.out.println("Finished!");
}
结合两个数组的最简单方法是什么
int[] firstArray= {3, 4, 4, 5};
int secondArray[] = {2, 4, 4, 5};
int fLen = firstArray.length;
int sLen = secondArray.length;
int thirdArray[] = new int[fLen+sLen];
System.arraycopy(firstArray, 0, thirdArray, 0, fLen);
System.arraycopy(secondArray, 0, thirdArray, fLen, sLen);
for(int i: thirdArray){
System.out.print(i + " ");
}
组合数组的方法有很多种。如果您熟悉这些,也可以使用List
。 read this question for more info
<强>更新强>
Carlos Heuberger 评论:
- 您真的想要将读取的整数与(ascii)代码进行比较 'a'?如果文件中的长度为97,则与“a”和“a”相同 逻辑将失败。
- ifI中的nextInt读取(并消耗)整数 - 第一个值 - 因此只有每秒的值都会保存在arr中。
醇>
变化:
因为你只想获得只有数组大小的输入,
if(input.nextInt()!='a')
{
arr[i] = input.nextInt();
}
要:
if(input.hasNext())
{
arr[i] = input.nextInt();
}
更新(提问后):
请不要改变整个问题因为每个人都回答错了。而不是那个问一个新问题。无论如何,
我修复了它,但结果是错误的...第一个数组输入是4 第二个阵列的5小时为7 8 1。输出是4 5 0 0 7 8 .... i 不希望零也是最后一个元素搞乱。
0
因为你为第一个数组的四个索引分配了内存。
int[] arr1 = new int[4];
错过了最后一个元素,因为你只为两个索引记录内存。
变化:
int[] arr2 = new int[2];
要:
int[] arr2 = new int[3];
在显示时跳过0
:
for (int a = 0; a < arr3.length; a++) {
if(arr3[a] != 0){
System.out.print(arr3[a] + " ");
}
}
根据更新问题,这是固定程序:
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] arr1 = new int[4];
int[] arr2 = new int[3];
int[] arr3 = new int[arr1.length + arr2.length];
for (int i = 0; i < arr1.length; i++) {
try {
if (input.hasNext()) {
arr1[i] = input.nextInt();
}
}catch (Exception e) {
}
System.arraycopy(arr1, 0, arr3, 0, arr1.length);
}
Scanner input2 = new Scanner(System.in);
for (int i = 0; i < arr2.length; i++) {
try {
if (input2.hasNext()) {
arr2[i] = input2.nextInt();
}
}catch (Exception e) {
}
System.arraycopy(arr2, 0, arr3, arr1.length, arr2.length);
}
for (int a = 0; a < arr3.length; a++) {
if(arr3[a] != 0)
System.out.print(arr3[a] + " ");
}
}
答案 2 :(得分:0)
你可以使用
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int a[]=new int[10];
try
{
for(int i=0;i<10;i++){
a[i]=in.nextInt();
}
}
catch(Exception e)
{
System.out.println("quit");
}
}
由于 任何char输入都会抛出异常 catch部分将执行。 以及关于连接两个数组: 既然你问过简单的方法:
int a[]={1,2,3,4};
int b[]={5,6,7};
int c[]=new int[a.length+b.length];
int j=0;
for(int i=0;i<a.length;i++){
c[j]=a[i];
j++;
}
for(int i=0;i<b.length;i++){
c[j]=b[i];
j++;
}
for(int i=0;i<c.length;i++){
System.out.println(c[i]);
}
答案 3 :(得分:-1)
如果你想从输入中获得第一个字符, 写在下面。
{{1}}