我试图在for循环中编写一个数组,似乎对错误没有任何意义。
String[][] userName;
userName = new String[3][4];
for(int x=1; x<= 4; x++) {
for(int y=-1; y <= 3; y++) {
System.out.println("Enter student name for row "+x+"column "+y+" ==>");
userName[x-1][y-1] = (String) System.in.read();
}
}
对于这一行:
userName[x-1][y-1] = (String) System.in.read()
它出错了:
Incompatible types: int cannot be converted to String
但该行中的内容被归类为int
?我所知道的只有[x-1][y-1]
,但他们会在数组中找到数字,我甚至会删除它们,但它仍然会说同样的错误。
什么被归类为int
,如何解决此错误?
答案 0 :(得分:2)
因为ddd
将读取字节将返回0-255范围内的值,因此您不需要它,您想要读取String然后使用System.in.read()
或Scanner
< / p>
Streams
Scanner(import java.util.Scanner)
Scanner scan =new Scanner(System.in);
for(int x=1; x<= 4; x++) {
for(int y=-1; y <= 3; y++) {
System.out.println("Enter student name for row "+x+"column "+y+" ==>");
userName[x-1][y-1] = scan.read();
}
}
或
Streams
Scanner scan =new Scanner(System.in);
scan.read(); // read the next word
scan.readLine(); // read the whole line
扫描仪很简单,附带了很多功能link to doc,Streams可用于读取有时无法通过扫描仪读取的批量数据
答案 1 :(得分:1)
1 for(int x=1; x<= 4; x++)
2 {
3 for(int y=-1; y <= 3; y++)
4 {
5 System.out.println("Enter student name for row "+x+"column "+y+" ==>");
6 userName[x-1][y-1] = (String) System.in.read();
7 }
8 }
让我们一点一点地分割这个循环。 在第6行,您通过System.in.read()行获取Integer输入,但您的数组基本上是String数据类型!所以,你把它转换为String。但是,如果没有 Integer.toString(System.in.read()),则无法将int插入到字符串中。这是正常的方式!但是,最简单的方法是
userName[x-1][y-1] = "" + System.in.read();
Java从右到左读取一行。所以它需要一个输入并将它附加到一个空的String然后将它放在userName数组中!。
(感谢Pavneet Singh注意到我) (感谢Erwin Bolwidt纠正了我。我没注意到它是字符串!)
或者,您可以使用Scanner class。
为此,您需要添加以下代码。 在课程行(公共课程)
之前添加以下内容import java.util.Scanner;
然后当你的课程在 public static void main(..)里面开始,在第一行或在函数之前的任何方便的行中,你将写下以下行
Scanner sc = new Scanner(System.in);
初始化扫描仪。然后你可以使用扫描仪类!
userName[x-1][y-1] = sc.next();
透过扫描仪类,您需要指定您将提供的数据类型!因此,如果您/ user提供String或float或boolean值,它将抛出错误并且程序将结束/崩溃!非常有效,如果您试图避免错误的数据类型。
最后,您可能在第3行的循环声明中出错。 您可以从 y = -1 运行循环,但在Java中,数组索引从0开始。因此, y上没有索引 - 1 = - 1 - 1 = -2 < / strong>,会抛出错误!要避免这一点,您只需要从y = 1声明循环。
for(int y = 1, y <= 3; y++)
快乐的节目!干杯!
答案 2 :(得分:0)
在使用System.in.read()
之前,你应该对它进行一些研究。 System.in.read()
方法从输入流中读取数据字节并将数据作为整数返回。因此,您只能使用整数或字符变量来存储数据。字符串变量无法存储方法System.in.read()
返回的数据。这就是你得到异常的原因
不兼容的类型:int无法转换为String
使用System.in.read()
方法时也使用try catch块。