【问题标题】:Calling a function using switch-JAVA(homework)使用switch-JAVA调用函数(作业)
【发布时间】:2015-03-15 21:59:33
【问题描述】:

我正在尝试解决这个问题:

编写一个包含以下内容的程序:
(i) 读取 NΧM 矩阵的函数。
(ii) 在屏幕上显示 NXM 矩阵的功能。
(iii) 添加这两个矩阵的函数。
(iv) 将这两个矩阵相减的函数。

程序还必须包含一个 main() 函数,该函数将首先声明两个 3x3 矩阵 A 和 B,允许输入 A 和 B 的数据(使用 (i) 中的函数),并且应该 连续显示如下菜单:
1。添加矩阵
2。减去矩阵
3。出口
请输入您的选择(1-3):
选择1或2后,程序应显示相应的 结果。什么时候 2 被选中,程序应该退出。

我尝试过这样做,但我遇到了 switch 语句的问题。函数调用带有下划线,我不明白为什么。

有错误信息:方法add(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int) in Number12 类型不适用于参数 ()

代码如下:

import java.util.Scanner;
public class Number12 {

public static void read()
{
    int a1,a2,a3,a4,a5,a6,a7,a8,a9;
    int b1,b2,b3,b4,b5,b6,b7,b8,b9;

    Scanner input = new Scanner(System.in);

    System.out.println("You will now enter the values for matrix A.");
    System.out.print("Enter the values for a1 a2 and a3: ");
    a1 = input.nextInt();
    a2 = input.nextInt();
    a3 = input.nextInt();
    System.out.print("Enter the values for a4 a5 and a6: ");
    a4 = input.nextInt();
    a5 = input.nextInt();
    a6 = input.nextInt();
    System.out.print("Enter the values for a7 a8 and a9: ");
    a7 = input.nextInt();
    a8 = input.nextInt();
    a9 = input.nextInt();

    System.out.println("You will now enter the values for matrix B.");
    System.out.print("Enter the values for b1 b2 and b3: ");
    b1 = input.nextInt();
    b2 = input.nextInt();
    b3 = input.nextInt();
    System.out.print("Enter the values for b4 b5 and b6: ");
    b4 = input.nextInt();
    b5 = input.nextInt();
    b6 = input.nextInt();
    System.out.print("Enter the values for b7 b8 and b9: ");
    b7 = input.nextInt();
    b8 = input.nextInt();
    b9 = input.nextInt();

    add(a1,a2,a3,a4,a5,a6,a7,a8,a9,b1,b2,b3,b4,b5,b6,b7,b8,b9);
    subtract(a1,a2,a3,a4,a5,a6,a7,a8,a9,b1,b2,b3,b4,b5,b6,b7,b8,b9);
}

public static void add(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9,int b1, int b2,int b3,int b4,int b5,int b6,int b7,int b8,int b9)
{
    int x1,x2,x3,x4,x5,x6,x7,x8,x9;
    x1 = a1 + b2;
    x2 = a2 + b2;
    x3 = a3 + b3;
    x4 = a4 + b4;
    x5 = a5 + b5;
    x6 = a6 + b6;
    x7 = a7 + b7;
    x8 = a8 + b8;
    x9 = a9 + b9;

    System.out.println("The result is: ");
    System.out.println(x1+" "+x2+" "+x3);
    System.out.println(x4+" "+x5+" "+x6);
    System.out.print(x7+" "+x8+" "+x9);
}

public static void subtract(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9,int b1, int b2,int b3,int b4,int b5,int b6,int b7,int b8,int b9)
{
    int x1,x2,x3,x4,x5,x6,x7,x8,x9;
    x1 = a1 - b2;
    x2 = a2 - b2;
    x3 = a3 - b3;
    x4 = a4 - b4;
    x5 = a5 - b5;
    x6 = a6 - b6;
    x7 = a7 - b7;
    x8 = a8 - b8;
    x9 = a9 - b9;

    System.out.println("The result is: ");
    System.out.println(x1+" "+x2+" "+x3);
    System.out.println(x4+" "+x5+" "+x6);
    System.out.print(x7+" "+x8+" "+x9);
}


public static void main(String[] args) {

    int choice;

    Scanner input = new Scanner(System.in);
    System.out.println("You are asked to enter values for two 3x3 matrix. Below is the format: ");
    System.out.println("a1 a2 a3");
    System.out.println("a4 a5 a6");
    System.out.println("a7 a8 a9");
    System.out.println("and");
    System.out.println("b1 b2 b3");
    System.out.println("b4 b5 b6");
    System.out.println("b7 b8 b9");

    read();

    System.out.println("");
    System.out.println("****************************************************");
    System.out.println("****\t\t1. Add the matrices\t\t****");
    System.out.println("****\t\t2. Subtract the matrices\t****");
    System.out.println("****\t\t3. Exit\t\t\t\t****");
    System.out.println("****************************************************");
    System.out.print("Please enter 1-3 for your choice.");
    choice = input.nextInt();

    switch(choice)
    {
    case 1:
    {
        add();
        break;
    }
    case 2:
    {
        subtract();
        break;
    }
    case 3:
    {
        break;
    }
    default:
    {
        System.out.print("Please enter a number from 1-3.");
    }
    }

}
}

感谢您的帮助。

【问题讨论】:

  • 您使用的是什么 IDE?日食?在带下划线的语句上移动鼠标时你想告诉什么?它们是警告还是编译时出错?
  • 那是错误信息:方法 add(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int Number12 类型中的 , int) 不适用于参数 ()
  • 您的switch 是错误的,在您的switch 的开头和结尾只有一对{ }
  • 你的类中没有 add() 方法,只有一个方法 add(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9 ,int b1,int b2,int b3,int b4,int b5,int b6,int b7,int b8,int b9)
  • @philippelhardy 你应该和你的评论作为答案

标签: java function matrix switch-statement


【解决方案1】:

通过将你读入的 int 移动到类成员中,在类实例中保持整数读取。将静态方法 add() read() 和 substract() 更改为实例方法(删除静态单词)。

import java.util.Scanner;
public class Number12 {

    int a1,a2,a3,a4,a5,a6,a7,a8,a9;
    int b1,b2,b3,b4,b5,b6,b7,b8,b9;

public void read()
{

从 read 中删除 add(...) 和 substract() 调用。

然后用非静态add()替换静态add(a1...b9)

在你的主要:

添加行:

Number12 number = new Number12();

使用 number.read() 代替 read()

使用 number.add() 代替 add()

使用 number.substract() 而不是 substract()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 2020-04-09
    • 2020-10-24
    • 1970-01-01
    • 2020-02-02
    • 2012-06-04
    相关资源
    最近更新 更多