私は配列を入力する必要がある学校用の小さなプログラムに取り組んでいます。隣接要素が要素よりも小さい場合は、配列内のすべての要素をチェックする必要があります。隣人が小さい場合 - >この要素は、余分*配列の範囲外のJava
を取得しかし、私は、例えば境界線の問題点、最初のものと最後の1つを得ました。最初のものには隣人が1つしかありません。私はあなたが「*」を追加して小さくする要素の両方の隣人を必要とするので、彼らは1が欠落しているので、あなたは最初と最後の要素を(スキップすることができ、私に
私は配列を入力する必要がある学校用の小さなプログラムに取り組んでいます。隣接要素が要素よりも小さい場合は、配列内のすべての要素をチェックする必要があります。隣人が小さい場合 - >この要素は、余分*配列の範囲外のJava
を取得しかし、私は、例えば境界線の問題点、最初のものと最後の1つを得ました。最初のものには隣人が1つしかありません。私はあなたが「*」を追加して小さくする要素の両方の隣人を必要とするので、彼らは1が欠落しているので、あなたは最初と最後の要素を(スキップすることができ、私に
を助けることを願って
public class Tops {
Scanner sc = new Scanner(System.in);
public void calculate(){
String number;
ArrayList<String> numbers; //def’s, decl’s ArrayList
ArrayList<String> after;
numbers = new ArrayList<>(); //creates numbers
after = new ArrayList<>();
number = sc.next();
while (!"0".equals(number)) {
numbers.add(number); //initializes each ArrayList element
number = sc.next();
}
for (int i = 0; i < numbers.size(); i++) {
if (Integer.parseInt(numbers.get(i)) > Integer.parseInt(numbers.get(i+1)) && Integer.parseInt(numbers.get(i)) > Integer.parseInt(numbers.get(i-1))){
String replace = numbers.get(i)+"*";
after.add(replace);
} else {
after.add(numbers.get(i));
}
}
for(int i=0;i<after.size();i++){
System.out.print(after.get(i)+ " ");
}
}
public static void main(String[] args) {
new Tops().calculate();
}
}
隣人の)。
import java.util.ArrayList;
import java.util.Scanner;
public class Tops {
private static final Scanner INPUT_SCANNER = new Scanner(System.in);
public static void calculate() {
// Initialize numbers
ArrayList<String> numbers = new ArrayList<>();
String number = INPUT_SCANNER.next();
while (!"0".equals(number)) {
numbers.add(number);
number = INPUT_SCANNER.next();
}
// Check the neighbours
ArrayList<String> after = new ArrayList<>();
// Check first element
if (numbers.get(0) > numbers.get(1)) {
after.add(numbers.get(0) + "*");
} else {
after.add(numbers.get(0));
}
// Check other elements
for (int i = 1; i < numbers.size() - 1; i++) {
int previous = Integer.parseInt(numbers.get(i - 1));
int current = Integer.parseInt(numbers.get(i));
int next = Integer.parseInt(numbers.get(i + 1));
String newElement = numbers.get(i);
if (current > next && current > previous) {
newElement = newElement + "*";
}
after.add(newElement);
}
// Check last element
if (numbers.get(numbers.size() - 1) > numbers.get(numbers.size() - 2)) {
after.add(numbers.get(numbers.size() - 1) + "*");
} else {
after.add(numbers.get(numbers.size() - 1));
}
after.add(numbers.get(numbers.size() - 1));
// Show the result
for (int i = 0; i < after.size(); i++) {
System.out.print(after.get(i) + " ");
}
}
public static void main(String[] args) {
calculate();
}
}
実行例:
INPUT: 1 2 3 2 1 0
OUTPUT: 1 2 3* 2 1
ていることに注意してください:あなたがいずれかを持っていないので、私はあなたの計算方法は、静的行った
この考慮して、あなたのコードを適応Topsクラスの非静的フィールド
は、あなたの答えをありがとう、私は。私は考えても最初にそれを説明していなかったし、最後も*を持っていますが、唯一の隣人を持つことができます。 – soepblik
をので、代わりに要素を追加する場合は追加する各コーナーケースのチェック。私は答え –
を更新します@ soepblikしてください有用であれば[回答を受け入れる](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)と考えてください。 –
は '私は= numbers.size() - '1'私は '1'が範囲外にあります+。 'i
Jens
は今、なぜ人々はここに投稿する前にGoogleで試してみていない:(@Jensにaddtionで –
を確認、例外はあなたのエラーの行番号を提供します。あなたは、エラーのソースを見ることができるようにします。[の –