从控制台获取char并将其转换为int

时间:2013-01-30 18:42:45

标签: java

尝试创建新方法,但在运行期间它无法正常工作 码 这个放在

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

4 个答案:

答案 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);