2017-03-02 6 views
0

...私は1つのメインメソッドの考え方を理解してから、複数のクラスを呼び出すことができます。異なるシナリオを実行するために直接参照できること。それが必要な場合は、それを使用してください。静的とは主が大事になっている間の1つのインスタンスのことです 質問: 1.私はバーを置いたところに戻ります。これは私をこのインスタンスから追い出すために使用されます。しかし、それは私にStringが必要だと言っています。メソッドと出力が一致しなければならないので意味がありますか? 私は試みました: 1. int値だけを返します 2. intを文字列に変換するにはString.valueOf(special);を使用します。 どこにエラーがありますか?インスタンスとクラスの構文

import java.util.Scanner; 
public class Overall{ 
    public static void main(String[] argc){ 
    Scanner input = new Scanner(System.in); 
    int i = 0; 
    int containsLowerCase = 0; 
    System.out.println(" Please give me a string that has a combination of lower, upper, digits and special characters"); 
    String s1 = input.next(); 
    System.out.println(s1); 
    } 
    public static String isSpecial (String input){ 
    int special = 0; 
    int i =0; 
    for(i=0;i< input.length(); i++){ 
     char c = input.charAt(i); 
     if (c=='#' || c=='$' || c== '*' || c== '&') 
     special++; 
     String.valueOf(special); 
    } 
    return special; 


_________________________________________________________ 
^ONLY FOCUSING ON UPPER HALF ISSUES^

    public static String print (String input){ 
    System.out.println(s1); 
    }  
public static int isDigit (int input){ 
    int digit = 0; 
    for(i=0;i< input.length(); i++){ 
    char c = imput.charAt(i); 
    if (character.isDigit(s1.charAt(i))){ 
     isDigit++; 
    } 
    return isDigit++; 
    } 
} 
public static int isLower (int input){ 
    int digit = 0; 
    for(i=0;i< input.length(); i++){ 
    char c = imput.carAt(i); 
    if (character.isLowerCase(s1.charAt(i))){ 

     isLower++; 
    } 
    } 
} 
public static int isUpper (int input){ 
    int digit = 0; 
    for(i=0;i< input.length(); i++){ 
    char c = imput.carAt(i); 
    if (character.isUpperCase(s1.charAt(i))){ 

     isUpper++; 
    } 
    } 
} 






} 

答えて

2

あなたはint型である特殊な返し、新しい文字列変数を定義し、それを返すか、単にreturn String.valueOf(special);する必要があります。

intをStringに変換するString.valueOf(int)を呼び出しましたが、そのメソッドの戻り値をString変数に配置する必要があります。

例:String newStringVariable = String.valueOf(special);

1

戻りString.valueOf(数)

public static String isSpecial (String input){ 
    int special = 0; 
    int i =0; 
    for(i=0;i< input.length(); i++){ 
     char c = input.charAt(i); 
     if (c=='#' || c=='$' || c== '*' || c== '&') 
     special++; 
    } 
    return String.valueOf(special); 
0

私はすべてのあなたの過ちを言及しようとすると、それは間違っていると、それはROのようになりました何理由を教えてくれます。

まず、isSpecialメソッドから始めましょう。
文字列内に特殊文字が含まれている回数を数えます。そのコードのほとんどは正しいですが、私はあなたが文字列ではなくint型の戻り値型を望むと思います。メソッドの名前の前に記述する型(この場合はString)は、メソッドが返すオブジェクトの型です。あなたの方法では、特定のイベントが発生した回数をカウントするので、後でそれを計算するためにの数字を返すことができます。

returnステートメントはメソッド本文内になければなりません。そして、到達すると、現在のメソッドはその値を取り、それを呼び出します。その後、メソッドが終了するので、戻り値の後にこのメソッドは終了し、プログラムはそのメソッドを呼び出したところで続行されます。次のコードを取る:このメソッドを実行すると

public class Test { 
    public static void main (String [] args){ 
     String testText = "This was written on 2.03.2017"; 
     int numbers = countNumeric (testText); 
     System.out.println ("The text containes "+ numbers +" numbers"); 
    } 

    public static int countNumeric (String text){ 
     int count = 0; 
     for (int i = 0; i < text.length; i++){ 
      if (Character.isDigit (text.charAt (i)) 
       count++; 
     } 
     return count; 
    } 

を、Javaはカウントが文字列の各桁の文字のための1つインクリメントさcountNumeric方法、にその文字列を渡し、その後、新しいStringを作成します。 countNumericはカウントを返します。プログラムはmainメソッドに戻り、countNumericの戻り値をとり変数番号に入れ、それを出力します。

また、String.valueOfを使用すると問題が発生しているようです。 String.valueOfは数値を取り、それを文字列に変換するメソッドです。しかし、あなたがintとして特別な宣言をして以来、あなたはそれにStringを格納することはできません(そして後でそれを使用したいかもしれません)。だから、数値を文字列に変換するために、あなたはこの単純な例のように、String型の新しい変数を作成する必要があります。

int number = 123; 
String text = String.valueOf (number); 
//do something with text 

だからあなたのエラーのほとんどが欠落リターンまたは間違った戻り値の型に起因するものです。また、あなたのisDigitメソッドのリターンはforループ内にあるので、Stringの最初の文字だけを見ます。

プログラミングに慣れていないので、私はあなたを助けてくれることを願っており、ステップチュートリアルによる良いJavaステップを探すことをお勧めします。

関連する問題