尝试创建新方法,但在运行期间它无法正常工作 码 这个放在
class Matrix {
public static void main (String args[]) throws IOException {
...
System.out.println("Enter q-ty of matrix elements i= ");
int gormatelement = 0;
getchartoint (gormatelement);
...
}
...
}
和方法之后
public static void getchartoint (int a) throws IOException{
BufferedReader bReader = new BufferedReader (new InputStreamReader(System.in));
String k = bReader.readLine();
a = Integer.parseInt(k);
}
此代码必须从控制台获取char并将其转换为int - 将用作矩阵中元素的q-ty
答案 0 :(得分:2)
当您在方法中更改简单参数变量(如a)的值时,它不会更改您在调用方法时给出的变量(如gormatelement)。
最简单的方法是让方法返回整数值和调用代码来存储它。
int gormatelement = getchartoint ();
和
public static int getchartoint () throws IOException{
int a;
... same code ...
return a;
}
<强>扩展强>
如果您想更多地了解传递变量的概念,您可以使用Google“按值调用”和“按引用调用”这两个术语。
Java使用“按值调用”但是当包含实例变量的对象传递给方法时很容易混淆,因为包含的字段值可以更改,并且更改似乎传播到您调用方法的对象用。
正在发生的事情是,Object的值实际上是对obect内容的引用,可以这么说。你必须考虑一下,看看我的意思。
答案 1 :(得分:1)
public class x
{
public static void main(String[] args)
{
System.out.println("Enter q-ty of matrix elements i= ");
int gormatelement = 0;
getchartoint (gormatelement);
}
public static void getchartoint (int a) throws IOException{
BufferedReader bReader = new BufferedReader (new
InputStreamReader(System.in));
String k = bReader.readLine();
a = Integer.parseInt(k);
}
}
由于您是初学者,至少这是您的程序编译所必需的。
答案 2 :(得分:0)
您正在将parseInt()的结果分配给a,它是“gormatelement”的本地副本,并在函数结束后删除。 Java使用"call-by-value"作为原始数据类型。
您还可以查看Scanner Class:
public static int getIntFromCommandLine() {
Scanner scan = new Scanner(System.in);
return scan.nextInt();
}
答案 3 :(得分:-1)
尝试
int gormatelement = YourClass.getchartoint(0);