韩国做美食网站有哪些,html企业网站主页模板,wordpress导航文件,做网站设计挣钱吗题目背景 某涉密单位下发了某种票据#xff0c;并要在年终全部收回。 题目描述 每张票据有唯一的 ID 号#xff0c;全年所有票据的 ID 号是连续的#xff0c;但 ID 的开始数码是随机选定的。因为工作人员疏忽#xff0c;在录入 ID 号的时候发生了一处错误#xff0c;造成了… 题目背景 某涉密单位下发了某种票据并要在年终全部收回。 题目描述 每张票据有唯一的 ID 号全年所有票据的 ID 号是连续的但 ID 的开始数码是随机选定的。因为工作人员疏忽在录入 ID 号的时候发生了一处错误造成了某个 ID 断号另外一个 ID 重号。 你的任务是通过编程找出断号的 ID 和重号的 ID。 数据保证断号不可能发生在最大和最小号。 输入格式 一个整数 N(N100) 表示后面数据行数接着读入 N 行数据每行数据长度不等是用空格分开的若干个不大于 100100 个正整数不大于 105105每个整数代表一个 ID 号。 输出格式 要求程序首先输入要求程序输出 11 行含两个整数 mn用空格分隔其中m 表示断号 IDn 表示重号 ID。 package 练习;
import java.util.*;
public class 俩 {public static void main(String[] args) {Scanner scan new Scanner(System.in);int n scan.nextInt();
int without 0,more 0;int x;ListInteger list new ArrayList();
for(int i 0;i n;i ){String[] s scan.nextLine().split( );int[] anew int[s.length];for(int j 0;j s.length;j ) {a[i]Integer.valueOf(s[i]);x a[i];if(! list.contains(x)) list.add(x); else more x; }
}
Arrays.sort(a);for(int k 0 ; k a.length ;k ) if(a[k] ! a[k - 1]) without a[k];
System.out.println(without more); } }
当我把别人的循环代码生搬硬套地抄上去的时候再次基础上改了一下再加上机器人的帮助还是通过不了的代码。结果Eclipse一直报错说a没办法被范围识别到。我去查了一下通义千问虽然我没有看懂它说的但是我一看代码发现了
int[] anew int[s.length];
每次循环都会建立新的数组a[ ]但是转念一想就算是这样的问题使得我的把所有数据存进数组a的愿景失败了也会有最后一组a[ ]里面也有最后一行数据于是我猜测是数组a被放在了for循环里导致的尽管我记得好像c语言里的这样结构不会有这样的问题。后来我把数组放在循环之前定义好这个问题就解决了。这些其实都是后面想到了我写博客的时候没有理清楚
其中的 在Java中你可以使用Integer.parseInt()或Integer.valueOf()方法将字符串123转换为整数。以下是这两种方法的示例 String strNumber 123;
2int number Integer.valueOf(strNumber);
3System.out.println(number); // 输出123 String strNumber 123;
2int number Integer.parseInt(strNumber);
3System.out.println(number); // 输出123 我去找了通义千问它说
package 练习;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;public class Two {public static void main(String[] args) {Scanner scan new Scanner(System.in);int n scan.nextInt();int without Integer.MAX_VALUE, more 0;ListInteger list new ArrayList();for (int i 0; i n; i) {String[] s scan.nextLine().split( );int[] a new int[s.length];for (int j 0; j s.length; j) {a[j] Integer.parseInt(s[j]); // 修改为 a[j]x a[j];if (!list.contains(x)) {list.add(x);} else {more x; // 这里仅仅覆盖了 more 的值但没有记录所有重复元素}}}Arrays.sort(a);for (int k 0; k a.length a[k] ! a[k - 1]; k) { // 改进循环条件without Math.min(without, a[k]); // 更新 without 为当前遍历到的不重复元素的最小值}System.out.println(without more);}
}
结果——这个错误提示表明在尝试将空字符串 () 转换为整数时发生了 NumberFormatException。在您的代码中第 13 行的 Integer.valueOf(s[i]) 遇到了空字符串输入。
是的新的问题又出现了
String[] s scan.nextLine().split( );
int[] a new int[s.length];
for (int j 0; j s.length; j) {String currentString s[j].trim(); // 先移除前后空白字符if (!currentString.isEmpty()) { // 检查字符串是否为空a[j] Integer.parseInt(currentString);x a[j];if (!list.contains(x)) {list.add(x);} else {more x;}} else {// 处理空输入可以选择忽略、提示错误或终止程序System.out.println(Encountered empty input, ignoring...);}
}
我试着用了用这个移除前后空白字符和检查字符串是否为空的部分问题似乎得到了解决至少不再有同样的报错了。由于我不懂这个原理于是我把“改好”后的代码交给AI继续修改时又错误时后面又反复试了几次屡战屡败此时我意识到高太多自己不会的就是在凑了凑好了当然好但是现在凑不好很麻烦。我放弃了这个思路转而思考起最开始提取代码段的来源是否正确实验证明我搞来的循环提取代码是没有问题的。
中间经过了一些事情在另外一篇博客那里。
第二天我偶然想到把用Arraylist直接判断就行了但是后来发现这个方法其实只能找出重复值。但苦于无法改变加上代码的简洁性使我在另外一个类里保存了它。后来想来想去还是只能把判断缺少数拿出来用数组来判断。
我用x接收字符串转化成的数字然后把它赋值给数组a。由于我在for之前定义了一个数组所以我只能指定一个较大的数组a[1000]但这是样的化有的就用不上了于是我就不得不考虑那些我没用上的了AI告诉我 在Java中当你定义了一个数组但没有为其赋值时数组的元素并不会有一个默认的数值。数组的所有元素将保持未初始化状态也就是说它们的值是不确定的也可以说它们包含的是垃圾值garbage values。 对于基本类型数组如int, double, char等元素的值是随机的取决于内存中该位置的原有内容。因此直接访问未初始化的数组元素会导致不可预知的行为并可能引发NullPointerException如果数组引用是null或ArrayIndexOutOfBoundsException如果访问了不存在的索引。 对于引用类型数组如Object类型元素的默认值是null这意味着它们不会指向任何对象实例。 所以在实际编程中一定要确保在使用数组元素之前对其进行初始化。 使用Arrays.fill()方法初始化数组为0也可以对非new初始化 int[] array1D new int[10];
5Arrays.fill(array1D, 0); 我发现我的时 int[ ] a new int[1000];
于是就可以有
for(int i 1;i a.length ;i ){if(a[i] 0)continue;else if(a[i - 1] ! 0 a[i] ! a[i - 1] 1) {without a[i] - 1;break;}}
报错、调试错得越来越对再解决了一个个小问题之后我终于得到了。
package 练习;
import java.util.*;
public class 俩 {public static void main(String[] args) {Scanner scan new Scanner(System.in);int[] anew int[100];int n scan.nextInt();int without 0,more 0;int begin 0;ListInteger list new ArrayList();scan.nextLine();for(int i 0;i n;i ){String[] s scan.nextLine().split( );int end begin s.length;int k 0;for(int j begin ;j end;j ) {int x Integer.valueOf(s[k]);if(! list.contains(x)) {list.add(x);a[j] x;}elsemore x;k ;}begin s.length;}Arrays.sort(a);for(int i 1;i a.length ;i ){if(a[i] 0)continue;else if(a[i - 1] ! 0 a[i] ! a[i - 1] 1) {without a[i] - 1;break;}}System.out.println(without more); }
}这次不再有任何问题了。