2017-07-10 3 views
-1

Ich bekomme falsche Ausgabe dafür. Ich bekomme 0 als Ausgabe für jeden Fall. Ich weiß, dass es wegen falscher Verwendung des Bereichs von Variablen ist. Begrenzungselemente sollten nur als privat deklariert werden.Falsche Ausgabe im Bereich der Variablen in Java

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

class Difference { 
private int[] elements; 
public int maximumDifference; 
// Add your code here 
Difference(int elements[]) 
{ 
this.elements = elements; 
} 

int computeDifference() 
{ 

int maximumDifference=0; 
int l=elements.length; 
for(int i=0; i<l; i++) 
{ 
for(int j=i+1; j<l; j++) 
{ 
if (Math.abs(elements[i]-elements[j]) > maximumDifference){ 
maximumDifference = (Math.abs(elements[i]-elements[j])); 
} 
} 
} 
return maximumDifference; 
} 
} 

public class Solution { 

public static void main(String[] args) { 
Scanner sc = new Scanner(System.in); 
int n = sc.nextInt(); 
int[] a = new int[n]; 
for (int i = 0; i < n; i++) { 
a[i] = sc.nextInt(); 
} 
sc.close(); 

Difference difference = new Difference(a); 

difference.computeDifference(); 

System.out.print(difference.maximumDifference); 
} 
} 
+1

Bitte den Code einrücken. Es ist unmöglich, so zu lesen. – shmosel

+1

Willkommen bei Stack Overflow! Es sieht so aus, als müssten Sie lernen, einen Debugger zu verwenden. Bitte helfen Sie sich selbst [https://ericlippert.com/2014/03/05/how-to-debug-small-programs/]. Wenn Sie danach immer noch Probleme haben, können Sie gerne mit einem [minimalen, vollständigen und überprüfbaren Beispiel] (http://stackoverflow.com/help/mcve) zurückkommen, das Ihr Problem demonstriert. –

+1

Nur ein Problem, Sie vermissen die Frage. "Falsche Ausgabe" + Dumping der nicht eingerückten Code hier ist nicht einmal annähernd eine richtige Frage. –

Antwort

0

Bitte nächstes Mal Ihren Code einrücken.

Sie müssen nur den Typ int zu maximumDifference in computeDifference(), zu entfernen, weil bei dem Verfahren die Klasse Feld überschreiben, bevor Sie erklärt, die gleich 0 bleibt, wenn Sie die Methode aufrufen.

Eine andere Lösung wäre nur System.out.print(difference.computeDifference()); in Ihrer Hauptversion, da computeDifference() die Variable in ihrem Gültigkeitsbereich zurückgibt, die den richtigen Wert hat.

0

Sie brauchen nur eine Änderung. Weisen Sie das Ergebnis difference.computeDifference() Methodenaufruf der Variablen difference.maximumDifference:

difference.maximumDifference= difference.computeDifference(); 

     System.out.print(difference.maximumDifference);