हाइपरस्किल पर जावा सीखना। रणनीति विषय पर अटक जाओ। समुदाय गैर प्रतिक्रियाशील है और मुझे समझ में नहीं आता कि मुझे सही परिणाम क्यों नहीं मिल रहा है। कृपया मदद करे। मुझे लगता है कि मुझे यह नहीं मिल रहा है कि इस भाग का वास्तव में क्या अर्थ है: "यदि सरणी खाली है, तो खोजक को न्यूनतम मान और इंटीजर खोजने के मामले में इंटीजर। MAX_VALUE वापस करना चाहिए। अधिकतम मूल्य खोजने के मामले में इंटीजर। MIN_VALUE।"
import java.util.Scanner;
import java.util.Arrays;
import java.util.Collections;
import java.util.ArrayList;
class Finder {
private FindingStrategy strategy;
public Finder(FindingStrategy strategy) {
this.strategy = strategy;
}
/**
* It performs the search algorithm according to the given strategy
*/
public int find(int[] numbers) {
return this.strategy.getResult(numbers);
}
}
interface FindingStrategy {
/**
* Returns search result
*/
int getResult(int[] numbers);
}
class MaxFindingStrategy implements FindingStrategy {
@Override
public int getResult(int[] numbers) {
if (numbers.length > 0 ){
Arrays.sort(numbers);
return numbers[0];
} else {
return Integer.MIN_VALUE;
}
}
}
class MinFindingStrategy implements FindingStrategy {
@Override
public int getResult(int[] numbers) {
if (numbers.length > 1 ){
Arrays.sort(numbers);
return numbers[numbers.length-1];
} else {
return Integer.MAX_VALUE;
}
}
}
/* Do not change code below */
public class Main {
public static void main(String[] args) {
final Scanner scanner = new Scanner(System.in);
final String[] elements = scanner.nextLine().split("\\s+");
int[] numbers = null;
if (elements[0].equals("EMPTY")) {
numbers = new int[0];
} else {
numbers = new int[elements.length];
for (int i = 0; i < elements.length; i++) {
numbers[i] = Integer.parseInt(elements[i]);
}
}
final String type = scanner.nextLine();
Finder finder = null;
switch (type) {
case "MIN":
finder = new Finder(new MinFindingStrategy());
break;
case "MAX":
finder = new Finder(new MaxFindingStrategy());
break;
default:
break;
}
if (finder == null) {
throw new RuntimeException(
"Unknown strategy type passed. Please, write to the author of the problem.");
}
System.out.println(finder.find(numbers));
}
}
2 जवाब
मैं इस नौकरी के लिए धाराओं का उपयोग करूंगा:
Arrays.stream(numbers).min().orElse(Integer.MIN_VALUE);
Arrays.stream(numbers).max().orElse(Integer.MAX_VALUE);
चूंकि इस स्ट्रीम के साथ आपको numbers.length
की जांच करने की आवश्यकता नहीं है, यह numbers.length > 0
के बजाय numbers.length > 1
चेक करने की आपकी समस्या को भी हल करता है।
विचार यह है कि जब कोई इनपुट उपलब्ध नहीं है तो आपको या तो Integer.MAX_VALUE
या Integer.MIN_VALUE
वापस करना होगा। यदि अनुरोध इनपुट से न्यूनतम मान ज्ञात करना है, लेकिन इनपुट खाली है, तो आप Integer.MAX_VALUE
लौटाते हैं और वैकल्पिक रूप से यदि इनपुट खाली है और अधिकतम अनुरोध किया जाता है तो आप Integer.MIN_VALUE
वापस कर दें।
आपकी विशिष्ट समस्या इस वजह से है;
if (numbers.length > 1 ){
आपको यह जांचना होगा कि लंबाई> 0, 1 नहीं।
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।