Java 为什么我的语句不能将字符串解析为整数?
我试图将字符串解析为整数,但得到了不兼容的类型。我的计数器用于计算文件中记录的数量,程序可以附加到文件中并从中读取。现在我想对它进行排序并将其写回文件。如何执行此任务?此处未声明的变量是全局缩放的Java 为什么我的语句不能将字符串解析为整数?,java,arrays,sorting,Java,Arrays,Sorting,我试图将字符串解析为整数,但得到了不兼容的类型。我的计数器用于计算文件中记录的数量,程序可以附加到文件中并从中读取。现在我想对它进行排序并将其写回文件。如何执行此任务?此处未声明的变量是全局缩放的 public static void sort_addresses() throws IOException { String tnumber; String tname; String tnrooms; int[] tmprooms; int[] tmprooms1; int j; f
public static void sort_addresses() throws IOException
{
String tnumber;
String tname;
String tnrooms;
int[] tmprooms;
int[] tmprooms1;
int j;
for (int i = 0; i < counter; i++)
{
for(j = 1; j < (counter-1); j++)
//while (street_name[counter] != null)
{
tmprooms = Integer.parseInt (number_rooms[counter]);
tmprooms1 = Integer.parseInt (number_rooms[counter+1]);
if (tmprooms[i] > tmprooms1[i+1])
{
tnumber = street_number[counter];
tname = street_name[counter];
tnrooms = number_rooms[counter];
street_number[counter] = street_number[counter +1];
street_name[counter] = street_name[counter+1];
number_rooms[counter] = number_rooms[counter+1];
number_rooms[counter+1] = tnumber ;
street_name[counter+1] = tname;
number_rooms[counter+1] = tnrooms;
System.out.println(street_number[i]+"\t"+street_name[i]
+"\t"+number_rooms[i]);
}
}
public static void sort_addresses()引发IOException
{
字符串编号;
字符串名称;
弦乐室;
int[]tmprooms;
int[]tmprooms1;
int j;
对于(int i=0;itmprooms1[i+1])
{
t编号=街道号[柜台];
tname=街道名称[柜台];
tnrooms=房间数量[柜台];
街道号码[柜台]=街道号码[柜台+1];
街道名称[柜台]=街道名称[柜台+1];
房间数量[柜台]=房间数量[柜台+1];
房间数量[柜台+1]=t数量;
街道名称[柜台+1]=名称;
房间数量[柜台+1]=房间数量;
System.out.println(街道编号[i]+“\t”+街道名称[i]
+“\t”+房间数量[i];
}
}
声明:
int[] tmprooms;
int[] tmprooms1;
作为
返回一个int
,而不是int[]
请尝试此操作
public static void sort_addresses() throws IOException
{
String tnumber;
String tname;
String tnrooms;
int tmprooms;
int tmprooms1;
int j;
for (int i = 0; i < counter; i++)
{
for(j = 1; j < (counter-1); j++)
//while (street_name[counter] != null)
{
tmprooms = (Integer)number_rooms[counter];
tmprooms1 = (Integer)number_rooms[counter+1];
if (tmprooms[i] > tmprooms1[i+1])
{
tnumber = street_number[counter];
tname = street_name[counter];
tnrooms = number_rooms[counter];
street_number[counter] = street_number[counter +1];
street_name[counter] = street_name[counter+1];
number_rooms[counter] = number_rooms[counter+1];
number_rooms[counter+1] = tnumber ;
street_name[counter+1] = tname;
number_rooms[counter+1] = tnrooms;
System.out.println(street_number[i]+"\t"+street_name[i]
+"\t"+number_rooms[i]);
}
}
public static void sort_addresses()引发IOException
{
字符串编号;
字符串名称;
弦乐室;
int tmprooms;
int tmprooms1;
int j;
对于(int i=0;itmprooms1[i+1])
{
t编号=街道号[柜台];
tname=街道名称[柜台];
tnrooms=房间数量[柜台];
街道号码[柜台]=街道号码[柜台+1];
街道名称[柜台]=街道名称[柜台+1];
房间数量[柜台]=房间数量[柜台+1];
房间数量[柜台+1]=t数量;
街道名称[柜台+1]=名称;
房间数量[柜台+1]=房间数量;
System.out.println(街道编号[i]+“\t”+街道名称[i]
+“\t”+房间数量[i];
}
}
Integer.parseInt()
返回一个int
(可以自动装箱为整数),而不是int[]
数组
变量tmprooms
的类型为int[]
,但Integer.parseInt()
不返回int[]
数组
以下内容可用于对int[]
数组进行排序:
Arrays.sort(int [])
请看以下内容:几件事:
tmprooms
和tmprooms1
需要是int
,而不是int[]
j
需要从0
开始
- 对于数组访问,您需要使用
j
,而不是计数器
- 它所在的
System.out.println
实际上没有打印任何有意义的内容
number\u房间[counter+1]=tnumber;
应该是街道号[counter+1]=tnumber;
- 这似乎是,只是没有提前停止(因此效率甚至低于已经低效的算法)。有更好的算法,如
array.sort
(见下文)使用的算法
最终代码:
public static void sort_addresses()
{
String snumber, sname, tnrooms;
int tmprooms, tmprooms1;
for (int i = 0; i < counter; i++)
{
for (int j = 0; j < counter - 1; j++)
{
tmprooms = Integer.parseInt(number_rooms[j]);
tmprooms1 = Integer.parseInt(number_rooms[j + 1]);
if (tmprooms > tmprooms1)
{
snumber = street_number[j];
sname = street_name[j];
tnrooms = number_rooms[j];
street_number[j] = street_number[j + 1];
street_name[j] = street_name[j + 1];
number_rooms[j] = number_rooms[j + 1];
street_number[j + 1] = snumber;
street_name[j + 1] = sname;
number_rooms[j + 1] = tnrooms;
}
}
}
}
修复了你的格式设置。谢谢大家,我忘了提到3个字符串数组,我想对number_rooms进行排序,然后写回文件。number_rooms声明为GloballyIt返回一个int
;整数。valueOf
返回一个整数。number_rooms中有数字,我想对其进行排序,请问我该怎么做?文件中有3个数组谢谢,我在同一个文件中有3个数组。我认为排序只会对一个数组进行排序。您可能需要合并或合并三个int数组,在这个例子中,您可能需要查看以下参考:blackpanther,3个数组作为字符串存储在一个.txt文件中,我认为最好的排序方式是对num进行排序ber_rooms,这就是为什么我试图对它进行排序,但我也希望其余的数组保持同步响应是不可逆类型--tmprooms=(整数)number_rooms[计数器];嗨,Shreyans jogi,我现在在tmprooms1行得到数字格式的exoption。嗨,Dukeling,为什么在语句:Address中的字符串后面会有一个arror(String streetNumber,String streetName,int numberOfRooms)?它说它是wExpecting a)?再次感谢。我已经尝试了这两个部分,第一个部分在tmprooms1=Integer.parseInt(number_rooms[j+1]处没有给出数字格式异常);我原以为输入字符串可以克服这一点,但事实并非如此。再次感谢您到目前为止的输入。我非常新,因此代码的低效性是为什么Dukeling需要第二段代码的原因-它不应该这样说。该代码应该按原样运行。请随意放置代码,我可以看一看。NumberFormatException
意味着e字符串不包含可解析的整数。该字符串应仅包含整数,而不包含其他内容。请尝试打印该字符串并查看其外观。似乎无法在此处粘贴代码。但错误出现在地址的第一个字符串:-地址(字符串streetName、字符串streetNumber、int numberOfRooms)我把它放在你的某处了
public static void sort_addresses()
{
String snumber, sname, tnrooms;
int tmprooms, tmprooms1;
for (int i = 0; i < counter; i++)
{
for (int j = 0; j < counter - 1; j++)
{
tmprooms = Integer.parseInt(number_rooms[j]);
tmprooms1 = Integer.parseInt(number_rooms[j + 1]);
if (tmprooms > tmprooms1)
{
snumber = street_number[j];
sname = street_name[j];
tnrooms = number_rooms[j];
street_number[j] = street_number[j + 1];
street_name[j] = street_name[j + 1];
number_rooms[j] = number_rooms[j + 1];
street_number[j + 1] = snumber;
street_name[j + 1] = sname;
number_rooms[j + 1] = tnrooms;
}
}
}
}
static class Address
{
int numberOfRooms;
String streetNumber;
String streetName;
Address(String streetName, String streetNumber, int numberOfRooms)
{
this.numberOfRooms = numberOfRooms;
this.streetName = streetName;
this.streetNumber = streetNumber;
}
@Override
public String toString()
{
return numberOfRooms + ":" + streetName + ":" + streetNumber;
}
// an alternative is to have the class "implements Comparable<Address>"
// and have a "public int compareTo(Address o)" function
// then you can just say "Arrays.sort(addresses)"
public static Comparator<Address> numberOfRoomsComparator
= new Comparator<Address>() {
@Override
public int compare(Address o1, Address o2)
{
return Integer.valueOf(o1.numberOfRooms).compareTo(o2.numberOfRooms);
}
};
}
static Address[] addresses = {new Address("u1", "a1", 3),
new Address("u2", "a2", 1),
new Address("u3", "a3", 5),
new Address("u4", "a4", 4),
new Address("u5", "a5", 2)};
public static void main(String[] args)
{
Arrays.sort(addresses, Address.numberOfRoomsComparator);
System.out.println(Arrays.toString(addresses));
}