2015-10-03 4 views
0

Я хочу сделать сумму двух чисел. Но у меня проблемы с этим. Я не понимаю, почему моя сумма всегда равна нулю.Сумма двух чисел

import java.util.*; 
public class Numbers { 
    static int a; 
    static int b; 
    static int result; 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     System.out.println("Type the first number:"); 
     String a = in.nextLine(); 
     System.out.println(a); 
     System.out.println("Type the second number:"); 
     String b = in.nextLine(); 
     System.out.println(b); 
     display(); 
    } 

    public static void display(){ 
     result=a+b; 
     System.out.println("Sum of numbers is " + result); 
    } 
} 
+0

Возможно, вам лучше взять ввод как int и сохранить их непосредственно в ваших переменных int, а не в строках. Вы также можете анализировать строки в ints, но это лишний шаг, если у вас есть надежный ввод. – ChiefTwoPencils

+0

В любом случае ответ Гордона правильный; вы имеете дело с переменными разных областей. – ChiefTwoPencils

ответ

2

Я не программист Java, но я могу видеть, что у вас есть глобальные переменные, называемые a и b и локальные переменные, называемые a и b.

Ваш main() устанавливает локальные переменные. display() читает глобальные переменные.

0

Вам не нужны статические «глобальные» переменные в вашем случае. Таким образом, вы можете удалить этот кусок кода:

static int a; 
static int b; 
static int result; 

Затем Жюст использовать локальные переменные и дать и б в качестве параметра display() метода, как это:

public static void display(int a, int b){ 
    System.out.println("Sum of numbers is " + (a+b)); 
} 

В конце концов, вам нужно будет бросить String s, полученные через in.nextLine() и отбрасывают их на int, например, с Integer.parseInt(). Или просто получить целое число от пользователя.

0

Вы сделали пару ошибок:

  1. Строка и строка б является локальной переменной для основного метода(). Таким образом, вы не можете использовать эти переменные из метода display(). result=a+b; в способе отображения() на самом деле добавление и Ь, которые объявляются на уровне класса, чей по значению по умолчанию равно 0. поэтому суммирование 0.

  2. Даже если вы пишете result=a+b; внутри основной метод не будет работать. Поскольку и Ь являются строки в основной метод и вы не можете сделать добавление на строки

0

Используйте этот код

import java.util.*; 
public class NewClass { 
    static int a; 
    static int b; 
    static int result; 
    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     System.out.println("Type the first number:"); 
      a = in.nextInt(); 
     System.out.println(a); 
     System.out.println("Type the second number:"); 
     b = in.nextInt(); 
     System.out.println(b); 
     display(); 
    } 
    public static void display(){ 
     result=(a+b); 
     System.out.println("Sum of numbers is " + result); 
    } 
} 

Использование nextInt вместо метода nextLine .Если тип INT, то используется метод nextInt ,

Смежные вопросы