【问题标题】:How to make Switch in voidfunction Java如何在 voidfunction Java 中进行 Switch
【发布时间】:2015-03-11 08:00:53
【问题描述】:

已编辑:已经完成,谢谢大家

大家好,我只是一个新手。我需要把这个带开关的计算器放在一个函数中。我需要将它转换为 void 函数(如果这就是它的名称)。它已经工作了,但问题是它运行了两次。我只是添加了添加以使我的代码简短,但我也需要它与其他操作。如果有人知道,请发布它。这是我的代码:

import java.io.*;

public class Cal {

  static char Switch() throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("\n\n");
    System.out.println("1]Addition");
    System.out.println("2]Subtraction");
    System.out.println("3]Multiplication");
    System.out.println("4]Division");
    System.out.print("\nEnter Your Choice : ");
    char r = br.readLine().charAt(0);

    switch (r) {
      case '1':
        Add1();
        Add2();
        break;
      default:
        System.out.print("Error");
        break;

    }
    return r;
  }


  static int Add1() throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("\nAddition");
    System.out.print("enter 1st # : ");
    int x = Integer.parseInt(br.readLine());
    return x;
  }

  static int Add2() throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("enter 2nd # : ");
    int y = Integer.parseInt(br.readLine());
    return y;

  }


  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int y;
    int x;
    char r;
    r = Switch();
    x = Add1();
    y = Add2();
    System.out.print("\nSum " + (x + y));


  }
}

【问题讨论】:

  • static void ... // return r;到底是什么问题?

标签: java function switch-statement


【解决方案1】:

这个方法会变成

static void Switch()throws IOException{

然后您将所有 return r; 更改为 return;

在你main你会做的事情

    Switch();
    System.out.print("\nSum " + (x+y));

但是 x 和 y 也需要移动为类变量

【讨论】:

  • 已经做了你知道如何在函数语句中放置do while 会有帮助
【解决方案2】:

您的代码运行两次的原因是因为您调用了 Add1() 和 Add2()

  1. 来自Switch() 方法
  2. 再次来自main() 方法。

Switch():

    switch (r) {
      case '1':
        Add1();
        Add2();
        break;

main():

    r = Switch();
    x = Add1();
    y = Add2();

【讨论】:

  • 已经做了你知道如何在函数语句中放置do while 会有帮助
【解决方案3】:

你的逻辑是错误的。加法应该是一种方法,而不是两种方法。 另一个问题,您确实返回了值,但您没有将返回的值存储在任何地方。

更好的方法是:

switch (r) {
      case '1':
        addition();
        break;
      default: //
        break;
}

// ...

private int resultOfAddition;

public void addition(){
  try{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("\nAddition");
    System.out.print("enter 1st # : ");
    int x = Integer.parseInt(br.readLine());
    System.out.print("enter 2nd # : ");
    int y = Integer.parseInt(br.readLine());
    this.resultOfAddition = (x+y);

  }
  catch(Exception e){
     e.printStackTrace();
  }
}


public static void main(String[] args) throws IOException {
  //  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

//int y;
//    int x;
    char r =  'y';
    while (r!='x'){Switch();} // assuming you want the user to quit once entered x

//    x = Add1();
//    y = Add2();
    System.out.print("\nSum " + (resultOfAddition));
  }

【讨论】:

  • 它的工作不是我唯一的问题是做。你知道怎么把它放在哪里吗?我应该把它放在哪里,这样我就可以在不关闭它的情况下重新运行我的代码。
  • 重构你的主要方法。您正在从 switch 语句和 main 方法中调用您的添加。你想要什么,是我在回复编辑中添加的内容。在主要方法中,我注释掉了不应该存在的内容。看看那个,看看你是否明白为什么不需要这些行。
  • x = Add1();
  • supahraleiigh:检查main方法,有循环迭代。如果你想添加它,只需将 while(r!= 'x') 更改为 while(r!='n' && r!= 'N') 或类似的东西。
  • 但它会自动退出或恢复我需要选择是否要恢复该消息>。
猜你喜欢
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 2019-08-18
  • 2016-06-22
  • 1970-01-01
相关资源
最近更新 更多