2016-11-17 20 views
-2

私はあなたが私に教えてくれる限り、いつでも学ぶ準備ができています。私はJavaを使いこなすだけで、私が学ぶ最も良い方法です。私のコードで改善できると思っていることがあれば、それについて聞いてみたいと思います。何が起こっているのか分かりません - エラーはありません(Javaの新機能)

私が自分自身で準備したプロジェクトの全体的な目標は、人々に関する情報を格納するJavaでプログラムを作成することです。その後、その情報をTomcatサーバーに転送します。実行中のSQLをセットアップします。次のように今、あなたは私の全体的な目標を(私はそれにはほど遠いです)理解していることを

は、私の問題は次のとおりです。

私はなど、エントリコマンドと名のために私に尋ねたコードの一部を取得することができます問題ない。しかし、私が "read"をタイプしてenterを押すと、else if文をスキップしてelseセクションにまっすぐ進みます。

編集:問題を解決するために投稿を更新しました。

ワーキングコード:

import javax.print.DocFlavor.READER; 

import java.util.ArrayList; 
import java.util.Scanner; 


public class Main { 

public static void main(String[] args) { 
    Scanner reader = new Scanner(System.in); 
    int total = 0; 
    int years = 0; 
    int invested =0; 
    ArrayList<String> names = new ArrayList<String>(0); 
    ArrayList<String> address = new ArrayList<String>(0); 
    ArrayList<String> ids = new ArrayList<String>(0); 
    Scanner sReader = new Scanner(System.in); 

    while(reader.nextLine().toLowerCase().split(" ")[0] != "exit") 
    { 
    System.out.print("Enter Instruction: "); 
    String n = reader.nextLine(); 
    String[] uin = n.toLowerCase().split(" "); 
    if(uin[0].equals("add")) 
    { 
      try { 
       System.out.println(add(Integer.parseInt(uin[1]),Integer.parseInt(uin[2]))); 
       } catch (NumberFormatException e) { 
       System.out.println("Numbers Only"); 
       System.out.print(e.getMessage()); 
       } catch (Exception e){ 
        System.out.println("ERROR"); 
       } 
    } 


    if(uin[0].equals("sub") || uin[0].equals("subtract")) 
    { 
      try { 
       System.out.print(Integer.parseInt(uin[1])-Integer.parseInt(uin[2])); 
       } catch (NumberFormatException e){ 
       System.out.println("Numbers Only"); 
       System.out.print(e.getMessage()); 
       } catch (Exception e){ 
        System.out.println("ERROR"); 
       } 

    } 

    if(uin[0].equals("string")) 
    { 
     String string = "this is a string."; 
     System.out.println(string.indexOf("cat")); 
    } 
    if(uin[0].equals("a")) 
    { 
     total+=Integer.parseInt(uin[1]); 
     invested+=Integer.parseInt(uin[1]); 
    } 
    if(uin[0].equals("aa")) 
    { 
     total+=10000; 
     invested+=10000; 
    } 
    if(uin[0].equals("bb")) 
    { 
     total-=55000; 
     invested-=55000; 
    } 
    if(uin[0].equals("aq")) 
    { 
     for(int i = 0;i < Integer.parseInt(uin[1]);i++){ 
      total+=10000; 
      invested+=10000; 
      total*=1.06; 
      years+=1; 
     } 
     years-=1; 
    } 
    if(uin[0].equals("exit")) 
    { 
     break; 
    } 
    if(uin[0].equals("entry")){ 
     for(int i=0;i==0;i+=0){ 
      System.out.print("Entry Command: "); 
      String input = sReader.nextLine(); 
      if(input.equals("exit")){ 
       i = 1; 
      }else if(input.equals("read")){ 
       for(int y=0;y<names.size();y++){ 
        System.out.println("User #"+y); 
        System.out.println(names.get(y).toString()); 
        System.out.println(address.get(y).toString()); 
        System.out.println(ids.get(y).toString()); 
       } 
      }else{ 
       System.out.print("Name: "); 
       input = sReader.nextLine(); 
       names.add(input); 
       System.out.print("Address: "); 
       input = sReader.nextLine(); 
       address.add(input); 
       System.out.print("ID: "); 
       input = sReader.nextLine(); 
       ids.add(input); 
      } 
     } 
    } 
    total*=1.06; 
    years+=1; 
    double earn = Math.floor(total) * 0.06; 
    System.out.println("Bank: " + total); 
    System.out.println("Invested: " + invested); 
    System.out.println("Yearly Earnings: " + earn); 
    System.out.println("Years: " + years); 
    } 
} 
public static int add(int n1, int n2){ 
int out; 
try{ 
    out = (n1+n2); 
    return(out); 
}catch (Exception e){ 
    System.out.print("ERROR"); 
    return(0); 
} 
} 
} 

旧コード:

import javax.print.DocFlavor.READER; 

import java.util.ArrayList; 
import java.util.Scanner; 


public class Main { 

public static void main(String[] args) { 
    Scanner reader = new Scanner(System.in); 
    int total = 0; 
    int years = 0; 
    int invested =0; 
    ArrayList<String> names = new ArrayList<String>(0); 
    ArrayList<String> address = new ArrayList<String>(0); 
    ArrayList<String> ids = new ArrayList<String>(0); 
    Scanner sReader = new Scanner(System.in); 

    while(reader.nextLine().toLowerCase().split(" ")[0] != "exit") 
    { 
    System.out.print("Enter Instruction: "); 
    String n = reader.nextLine(); 
    String[] uin = n.toLowerCase().split(" "); 
    if(uin[0].equals("add")) 
    { 
      try { 
       System.out.println(add(Integer.parseInt(uin[1]),Integer.parseInt(uin[2]))); 
       } catch (NumberFormatException e) { 
       System.out.println("Numbers Only"); 
       System.out.print(e.getMessage()); 
       } catch (Exception e){ 
        System.out.println("ERROR"); 
       } 
    } 


    if(uin[0].equals("sub") || uin[0].equals("subtract")) 
    { 
      try { 
       System.out.print(Integer.parseInt(uin[1])-Integer.parseInt(uin[2])); 
       } catch (NumberFormatException e){ 
       System.out.println("Numbers Only"); 
       System.out.print(e.getMessage()); 
       } catch (Exception e){ 
        System.out.println("ERROR"); 
       } 

    } 

    if(uin[0].equals("string")) 
    { 
     String string = "this is a string."; 
     System.out.println(string.indexOf("cat")); 
    } 
    if(uin[0].equals("a")) 
    { 
     total+=Integer.parseInt(uin[1]); 
     invested+=Integer.parseInt(uin[1]); 
    } 
    if(uin[0].equals("aa")) 
    { 
     total+=10000; 
     invested+=10000; 
    } 
    if(uin[0].equals("bb")) 
    { 
     total-=55000; 
     invested-=55000; 
    } 
    if(uin[0].equals("aq")) 
    { 
     for(int i = 0;i < Integer.parseInt(uin[1]);i++){ 
      total+=10000; 
      invested+=10000; 
      total*=1.06; 
      years+=1; 
     } 
     years-=1; 
    } 
    if(uin[0].equals("exit")) 
    { 
     break; 
    } 
    if(uin[0].equals("entry")){ 
     for(int i=0;i==0;i+=0){ 
      System.out.print("Entry Command: "); 
      sReader = new Scanner(System.in); 
      System.out.println(sReader.nextLine()); 
      if(sReader.nextLine().equals("exit")){ 
       i = 1; 
      }else if(sReader.nextLine().equals("read")){ 
       System.out.println(names.size()); 
       System.out.println("yup"); 
       for(int y=0;y==names.size()-1;y++){ 
        System.out.println(names); 
        System.out.println(names.get(y)); 
        System.out.println(address.get(y)); 
        System.out.println(ids.get(y)); 
       } 
      }else{ 
       System.out.print("Name: "); 
       sReader = new Scanner(System.in); 
       names.add(sReader.nextLine()); 
       System.out.print("Address: "); 
       sReader = new Scanner(System.in); 
       address.add(sReader.nextLine()); 
       System.out.print("ID: "); 
       sReader = new Scanner(System.in); 
       ids.add(sReader.nextLine()); 
      } 
     } 
    } 
    total*=1.06; 
    years+=1; 
    double earn = Math.floor(total) * 0.06; 
    System.out.println("Bank: " + total); 
    System.out.println("Invested: " + invested); 
    System.out.println("Yearly Earnings: " + earn); 
    System.out.println("Years: " + years); 
    } 
} 
public static int add(int n1, int n2){ 
int out; 
try{ 
    out = (n1+n2); 
    return(out); 
}catch (Exception e){ 
    System.out.print("ERROR"); 
    return(0); 
} 
} 
} 
+3

あなたがテキストの新しい行にあなたが 'sReader.nextLine()'を呼び出すたびに読み続けます。変数に結果を格納し、その条件でその変数を使用します。 –

+1

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、もう少し詳しくお聞かせください。 –

+1

あなたのforループは非常に奇妙に見えます。 'for(int y = 0; y == names.size() - 1; y ++){'おそらく入力されません。 –

答えて

4

あなたがSystem.out.println(sReader.nextLine())をやっているので、それは間違っているだろう - これは自動的に最後の入力(あなたの例ではそう"exit")を取得します。しかし、あなたがif (sReader.nextLine().equals("exit"))をしようとすると、次の行をもう一度探しています。修正するには

、あなたが変数に入力を保存することができます:

String input = sReader.nextLine(); 
System.out.println(input); 
if (input.equals("exit")) { 
    // etc 
} 
+0

ありがとう!これは間違いなく正しい方向に私を押し込み、問題を解決しました。 – SWB

関連する問題