这是我第一次使用stackoverflow。我不知道我是否做对了。所以无论如何,我正在尝试在Java上制作计算器。我不确定如何解释我的问题。方法中的操作不会保存。当我尝试添加数字时,它不适用于它的最后状态。它适用于我给的第一个数字。你能帮助我吗?
import java.util.Scanner;
public class gelismishesap
{
public static void toplam(int k)
{Scanner a = new Scanner(System.in);
System.out.print(k + " + ");
for(int i = 0; i<1; i++)
{
int b = a.nextInt();
k += b;
System.out.println(k);
}
}
public static void cikarma(int k) {
Scanner a = new Scanner(System.in);
System.out.print(k + " - ");
for(int i = 0; i<1; i++)
{
int b = a.nextInt();
k -= b;
System.out.println(k);
}
}
public static void carpma(int k) {
Scanner a = new Scanner(System.in);
System.out.print(k + " x ");
for(int i = 0; i<1; i++)
{
int b = a.nextInt();
k *= b;
System.out.println(k);
}
}
public static void bolme(int k) {
Scanner a = new Scanner(System.in);
System.out.print(k + " / ");
for(int i = 0; i<1; i++)
{
int b = a.nextInt();
k /= b;
System.out.println(k);
}
}
public static void main(String[] args) {
Scanner a = new Scanner(System.in);
System.out.print("Sayı girin: ");
int anasayi = a.nextInt();
System.out.println(anasayi);
while(true)
{
String b = a.nextLine();
if(b.equals("q")) { break; }
if(b.equals("a")) { toplam(anasayi); }
if(b.equals("b")) { cikarma(anasayi); }
if(b.equals("c")) { carpma(anasayi); }
if(b.equals("d")) { bolme(anasayi); }
}
}
}
尝试将本节移至while循环内。这样,anasayi就会被重新分配
System.out.print("Sayı girin: ");
int anasayi = a.nextInt();
System.out.println(anasayi);
您的操作方法未将操作结果返回到main
方法。现在,您的返回值是void
,这意味着当您的方法完成执行时,它只是将控制权交还给main方法,而不返回任何值。因此,您需要了解有关从方法返回值的信息。
如果要保存每个方法的操作结果,则必须定义方法以返回值,如下所示:
public static int toplam(int k)
{Scanner a = new Scanner(System.in);
System.out.print(k + " + ");
for(int i = 0; i<1; i++)
{
int b = a.nextInt();
k += b;
System.out.println(k);
}
return k;
}
然后回到main方法中,对您的方法的调用将看起来像这样:
...
int result;
while(true)
{
String b = a.nextLine();
if(b.equals("q")) { break; }
if(b.equals("a")) { result = toplam(anasayi); }
...
然后,您可以在下一个循环中决定如何处理result
。祝你好运!
像int这样的原始类型被传递给方法by value。这意味着您的方法将获得k变量的副本。为了使您的代码正常工作,请将k定义为共享变量,而不是通过以下方法将其传递:(尽管这是非常非常糟糕的做法,但是稍后您将学习如何做:))
public class gelismishesap {
static int k = 0;
public static void toplam() {
// Your code ....
k += b;
}
// Other methods ....
public static void main(String[] args) {
// Code ....
k = a.nextInt(); // Instead of anasayi
}
}
并且,请稍后用英语写您的问题,包括您的代码中的名称:)