我有个问题。我试图从2D数组中删除符合特定条件的行。我以前使用
String [][] T = new String [line][column];
用户可以选择行数和列数,并用他选择的值填充表。其中一列必须包含项目的价格,这些价格将与用户给出的价格限制进行比较,低于价格的每个项目都必须从2D数组(行)中删除。我被告知使用数组。但是在这里我需要使用“for循环”和一个2D表。
到目前为止,这就是我的“删除部分”
public static String[][] deleterow(String[][]T, int priceLimit)
{
// count number of lines matching the condition (used later to redefine the new size)
int count=0;
int priceItem;
for (int i=0; i<T.length;i++)
{
for (int j=3; j<T[i].length;j++) // 4th colomn should contains prices
{
priceItem = Integer.parseInt(T[i][j]);
if (priceItem< priceLimit)
{
count=count+1;
}
}
}
String [][]T3 = new String [T.length-count][];
for (int i=0; i<T.length;i++)
{
for (int j=0; j<T[i].length;j++)
{
priceItem = Integer.parseInt(T[i][j]);
if(priceItem < priceLimit)
{
T3[i][j]=T[i+1][j];
}
else
{
T3[i][j]=T[i][j];
}
}
}
System.out.println(count+" items deleted from the table");
不幸的是,我在这里遇到了一个从字符串到Int的解析问题,所以代码不能再继续下去了。有什么可以改进的?
这里有一个简单的方法,将行转换为空值,如果第4列小于priceLimit,您将在调用该方法后获得一个空值数组,但是您可以在这里查看从java中的String数组中删除空值,以了解如何删除数组中的空值。
public static void main(String[] args) {
int lines = 4;
int columns = 4;
String[][] twoDArray = new String [lines][columns];
for (int i = 0; i < lines; i++) {
for (int j = 0; j < columns; j++) {
twoDArray[i][j] = "test";
}
}
twoDArray[0][3] = "5";
twoDArray[1][3] = "10";
twoDArray[2][3] = "15";
twoDArray[3][3] = "20";
System.out.println(Arrays.toString(twoDArray));
deleteMatchingRow(twoDArray, 16);
System.out.println(Arrays.toString(twoDArray));
}
public static void deleteMatchingRow (String[][] twoDArray, int priceLimit) {
for (int i = 0; i < twoDArray.length; i++) {
if (Integer.parseInt(twoDArray[i][3]) < priceLimit) {
twoDArray[i] = null;
}
}
}
现在,关于您的异常java。lang.NumberFormatException
您只需确保在每一行中,第4列确实是可解析的整数,而不是随机字符串。请注意,在main方法中,我用的“test”
填充了所有两个D数组,然后将每行的第4列重新分配为字符串编号,这样就可以用整数解析它们。parseInt()
问题内容: 我有一个奇怪的问题。我以为这会花我几分钟,但现在我已经挣扎了几个小时……这就是我得到的: 该是 在ArrayList中我得到了一些字符串(共14个左右),和他们的9,它得名_Hardi。 并使用上面的代码,我想删除它们。如果我使用a,那么它将打印出9次,这是好的,因为_Hardi在ArrayList中是9次。 但是,当我使用它时,它不会删除所有9个,而只会删除几个。我做了一些测试,我也
问题内容: 我想实现一种jQuery实时搜索。但是,发送输入到服务器之前,我想删除我的阵列,它有3点或更少的字符的所有项目(因为在德国的语言,这些话通常可以在搜索方面被忽略),所以成为 现在我的问题是,并非所有项目都在我的for循环中被删除。例如,如果我删除打字“这是一个测试”“是”,则“ a”保持不变。 我认为问题是for循环,因为如果我删除带有拼接的项目,则数组的索引会更改,因此它会继续使用“
我当前正在将一个ArrayList转换为一个字符串,以便将其发送到一个DB,这样我就可以在另一端检索它,并稍后将其转换回一个ArrayList。 我的思路是通过执行以下操作将其转换为当前的字符串 是ArrayList,看起来如下所示: 当我查看数据库时,它看起来像这样 如何删除开头的和最后的以便在数据库上看起来像? 在另一端,我可以使用以下方法获得它: (我正在使用SQLite,这是我大学项目的一
本文向大家介绍Java中增强for循环在一维数组和二维数组中的使用方法,包括了Java中增强for循环在一维数组和二维数组中的使用方法的使用技巧和注意事项,需要的朋友参考一下 一维数组: 输出:1 2 3 二维数组: 输出: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 以上就是小编为大家带来的Java中增强for循环在一维数组和二维数组中的使用方法的全部内容了,希望对大家有所帮助,
并分别处理这两个数组。这是更好的解决方案吗?
问题内容: 我有一个这样的对象数组: 我知道我可以找到匹配的项目,如下所示: 但是现在如何将其从原始文件中删除?我希望可以以某种方式返回索引,以便可以使用。或者更好的是,我想做这样的事情: 有任何想法吗? 问题答案: 您不了解的是Array是一个结构,因此 是一个值类型 。它不能像类实例那样在适当位置进行突变。因此,即使您扩展Array来编写一个变异方法,您也将始终在幕后创建一个新的数组。 因此,