Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t找出Java的等价物";参考传递”;在C++;要解决这个问题,最好的方法是通过 我在C++中修了CS-1课程,现在我在一所新大学,他们在这里使用java。我一直在学习新的语法,做我以前的C++实验室,我用一个旁路的方法来敲一堵墙。_Java_C++_Pass By Reference - Fatal编程技术网

Can';t找出Java的等价物";参考传递”;在C++;要解决这个问题,最好的方法是通过 我在C++中修了CS-1课程,现在我在一所新大学,他们在这里使用java。我一直在学习新的语法,做我以前的C++实验室,我用一个旁路的方法来敲一堵墙。

Can';t找出Java的等价物";参考传递”;在C++;要解决这个问题,最好的方法是通过 我在C++中修了CS-1课程,现在我在一所新大学,他们在这里使用java。我一直在学习新的语法,做我以前的C++实验室,我用一个旁路的方法来敲一堵墙。,java,c++,pass-by-reference,Java,C++,Pass By Reference,到目前为止,我的理解是Java是通过价值传递的,但是我如何才能实现这个问题的目标呢 写一个程序,告诉什么硬币给任何数额的变化从1美分到497美分。因为我们不使用便士,所以我们需要将任何一分钱四舍五入到接近5或10的位置。例如,如果金额为368美分,则四舍五入的数字为370美分,如果金额为367美分,则四舍五入的数字为365美分。兑换370美分的零钱是1个图尼(2美元硬币),1个鲁尼,2个25美分,2个一角硬币。使用面值为2美元、1美元、25美分、10美分和5美分的硬币。您的程序将使用以下功能:

到目前为止,我的理解是Java是通过价值传递的,但是我如何才能实现这个问题的目标呢

写一个程序,告诉什么硬币给任何数额的变化从1美分到497美分。因为我们不使用便士,所以我们需要将任何一分钱四舍五入到接近5或10的位置。例如,如果金额为368美分,则四舍五入的数字为370美分,如果金额为367美分,则四舍五入的数字为365美分。兑换370美分的零钱是1个图尼(2美元硬币),1个鲁尼,2个25美分,2个一角硬币。使用面值为2美元、1美元、25美分、10美分和5美分的硬币。您的程序将使用以下功能:

Void computeCoin(int coinValue, int &number, int &amountLeft);
请注意,此函数需要返回两个值,因此必须使用引用变量

例如,假设变量amountLeft的值为370美分。然后,在下面的调用之后,number的值将是1,amountLeft的值将是170(因为如果从370美分中取1 toonie,则剩下170美分):

在进行以下呼叫之前,请使用硬币名称打印数字值:

computeCoin(100, number, amountLeft);
等等。包括一个循环,允许用户对新输入值重复此计算,直到用户输入sentinel值以停止程序

在C++中,我可以使用参考变量,硬币的值可以改变。到目前为止,我学到的是对象是使用引用的一种方式,我不知道如何真正做到这一点,或者是否有更好的方式。我已经在这里包含了C++代码:

#include <iostream>
using namespace std; 

void computeCoin(int coinValue, int & number, int & amountLeft);

int main()
{

   int number, change, amountLeft, remainder;

   do
   {
       cout << "Enter the change (-1 to end): ";
       cin >> change;

  while (change>497)
  {
      cout << "The change should be less than 497. Try again.\n\n";
      cout << "Enter the change (-1 to end): ";
      cin >> change;
  }

  if (change != -1)
  {
     // round to near 5 or 10's
     remainder = change % 5;
     if (remainder <= 2)
        amountLeft = change - remainder; 
     else
        amountLeft = change + 5 - remainder;

     if (amountLeft == 0)
        cout << "No change.";
     else
     {
         cout << amountLeft << " cents can be given as\n";

         // compute the number of toonies
         computeCoin(200, number, amountLeft);
         if (number>0)
            cout << number << " toonie(s)  ";

         // compute the number of loonies
         computeCoin(100, number, amountLeft);
         if (number>0)
            cout << number << " loonie(s)  ";

         // compute the number of quarters
         computeCoin(25, number, amountLeft);
         if (number>0)
            cout << number << " quarter(s)  ";

         // compute the number of dimes
         computeCoin(10, number, amountLeft);
         if (number>0)
            cout << number << " dime(s)  ";

         // compute the number of nickels
         computeCoin(5, number, amountLeft);
         if (number>0)
            cout << number << " nickel(s)  ";

     }
         cout << endl << endl;
      }
   } while (change != -1);



 cout << "\nGoodbye\n";
   return 0;

}

void computeCoin(int coinValue, int &number, int &amountLeft)
{
   number = amountLeft / coinValue;
   amountLeft %= coinValue;
}
#包括
使用名称空间std;
void computeCoin(int coinValue、int和number、int和amountLeft);
int main()
{
整数、更改、左数、余数;
做
{
不能改变;
而(变化>497)
{
不能改变;
}
如果(更改!=-1)
{
//四舍五入到接近5或10的位置
剩余=更改%5;
如果(余数,您可以(而且可能应该)返回一个对象作为注释中所示的Joop Eggen的结果

有时可行的替代方法(从技术上讲,它总是可行的,但不应该总是使用)是传入一个可变对象,如下所示:

class MutableInteger
{
   private int value;

   public void setValue(final int val)
   {
      value = val;
   }

   public int getValue()
   {
      return value;
   }
}
然后将其实例而不是int参数传递到方法中


基本上,这类似于C中的结构。同样,我建议在这个特定的情况下返回一个结果。

返回一个
类结果{int number;int amountLeft;}
。Java的设计考虑了更少的错误倾向。
f(x);
永远不会给x赋值。请阅读此问题的优秀答案。您可以执行诸如Void computeCoin(int coinValue,Integer number[],Integer amountLeft[])和使用number[0]之类的操作=…但这通常不是一个好的做法。您有一个对状态进行操作并进行修改的函数。一种方法是让状态为类类型对象的状态,而函数为成员函数。
class MutableInteger
{
   private int value;

   public void setValue(final int val)
   {
      value = val;
   }

   public int getValue()
   {
      return value;
   }
}