私はここやプログラミングの面でも新しいです。私はインストラクターが十分な助けを得ていないので、私は他のトピックだけを勉強しようとしています。私はジェネリックスタックで逆の言葉をしたい。スタックを使って単語を反転する
私のpop、push、isEmpty、peekメソッドは動作します(これを試してみる前に簡単なプログラムでテストしました)。出力はcharという逆の単語charを与えているようですが、各チャットの前に私にヌルを与えてください!
私の質問は どうしてですか?そして、私は容量が9であるときに動作するexpandCapacityメソッドを持っていますが、入力が制限を超えたときには適用されません。
はここにここに私のコード
package Stack;
import java.util.Scanner;
public class ReverseDriver<T> {
private static String out;
private static String in;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter your sentence: ");
in = input.nextLine();
int size = in.length();
ArrayStack<Character> revStack = new ArrayStack<>(size);
for (int i = 0; i < in.length(); i++) {
char u = in.charAt(i);
revStack.Push(u);
if (in.length() > 9) {
revStack.expandCapacity();
}
}
while (!revStack.IsEmpty()) {
char u = revStack.Pop();
out = out + u;
System.out.flush();
System.out.print(out);
}
}
}
器の出力
run:
Enter a word:
word
nullr
nullro
nullrow
Exception in thread "main" java.lang.NullPointerException
at Stack.ReverseDriver.main(ReverseDriver.java:37)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
EDITです:ここで私が働いていたこと言った方法です。
@Override
public void Push (T element)
{
if (count == stack.length){
expandCapacity();
}
stack[++count] = element;
//System.out.println(count);
}
@Override
public String toString()
{
String result = "<top of stack>\n";
for (int index=count-1; index >= 0; index--){
result += stack[index] + "\n";
}
return result + "<bottom of stack>";
}
@Override
public boolean IsEmpty()
{ //Checks if array is empty
if(count == 0){
System.out.println("Nothing");
}
return count == 0;
}
public T Pop()
{
T output;
output = (stack[count - 1]);
count--;
return(output);
}
@Override
public T Peek()
{
//looks at the object at the top of this stack without removing it
//from the stack.
if(stack.length == 0){
// {
System.out.println("Cant peek a ghost");
}
return(stack[--count]);
}
// else
// {
// System.out.println(stack[count-1]);
// }
// }
@Override
public int Size()
{
//Sets the size of this vector
if(stack.length == 0){
System.out.println("Nothing inside");
}
System.out.println("The array's size is : " + count);
return count;
}
}
私はあなたはそれが働いていると述べたことに感謝しながら、あなただけの私たちにこれがある理由をいくつかのより多くの洞察力を与えるために、expandCapacityとのisEmpty方法で私たちのコードを記入してくださいすることができます起こっている:) – christopher
出力を生成するコードが同じであることを確かめてください - "単語を入力する"と "文を入力する"との比較 –
メモ: 'in.length()'が10の場合、 'expandCapacity'は10回呼び出されます。意図的?また、 'in'と'out'はstaticsではなくmainの局所変数であるべきです(少なくともこれが"本当の "プログラムであれば)。 – hyde