Javaコンパイルエラー: sLineはmain(java.lang.String[])で定義されています

このQ&Aのポイント
  • Javaのソースファイルで、2つの数の和、差、積、剰余を表示するプログラムがコンパイルエラーになっています。
  • エラーメッセージで「String sLine=inp.readLine(); //2つめの数値を入力」という行で「sLineはmain(java.lang.String[])で定義されています」と表示されています。
  • 「java.lang.String[]」というのは、Javaの「main」メソッドの引数の型を指しており、この場合は文字列の配列を意味しています。
回答を見る
  • ベストアンサー

java コンパイル

はじめまして。これは2つの数を入力してそれそれの和、差、積、剰余を表示するソースファイル(入力時の妥当性チェックは考慮しない。)なのですがこれがコンパイルエラーになってしまいます。 import java.io.*; interface plus { int Plus(); } interface sub { int Sub(); } interface mul { int Mul(); } interface mod { int Mod(); } class Compute implements plus,sub,mul,mod { int pa,pb; Compute(int a,int b) { this.pa=a; pb=b; } public int Plus() { return(pa+pb); //和を返す } public int Sub() //差を返す { return(pa-pb); } public int Mul() { return(pa*pb); //積を返す } public int Mod() { return(pa%pb); //余を返す } } class calc { public static void main(String args[]) throws IOException { InputStreamReader isp=new InputStreamReader(System.in); BufferedReader inp=new BufferedReader(isp); System.out.print("数1="); String sLine=inp.readLine(); //1つめの数値を入力 int a=Integer.parseInt(sLine); System.out.print("数2="); String sLine=inp.readLine(); //2つめの数値を入力 int b=Integer.parseInt(sLine); Compute c=new Compute(a,b); System.out.println("和:"+c.Plus()+"差:"+c.Sub()+"積:"+c.Mul()+"余:"+c.Mod()); } } というソースファイルなのですが、これが下記のようなエラーが出てしまいます。 String sLine=inp.readLine(); //2つめの数値を入力 の部分で sLineはmain(java.lang.String[])で定義されています と出ました。 良く見てみてのですが(java.lang.String[])の意味がよくわかわりません。これはどういう意味をもつのでしょうか。

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • aloop
  • ベストアンサー率23% (10/43)
回答No.2

おっと間違い。 String sLine=inp.readLine(); //1つめの数値を入力 int a=Integer.parseInt(sLine); System.out.print("数2="); String sLine=inp.readLine(); //2つめの数値を入力 同じ変数を2度宣言しようとしてますね。 sLine1, sLine2 というように変数名を独立させて見てください。

jun2249
質問者

お礼

実行できました!!ありがとうございます。

その他の回答 (1)

  • aloop
  • ベストアンサー率23% (10/43)
回答No.1

public static void main(String args[]) ↓ public static void main(String[] args) で、どうでしょう?

jun2249
質問者

補足

やってみましたが変わりないみたいです。

関連するQ&A

  • Javaプログラミング

    こんにちは。Javaを最近勉強し始めたJava初心者です。これは2つの数を入力してそれそれの和、差、積、剰余を表示するものです(入力時の妥当性チェックは考慮しない。)。しかし下記のプログラムがうまく動いてくれません。どこが間違っているのかわからないのでわかる方教えて下さい。おねがいします。 import java.io.*; interface plus { int Plus(); } interface sub { int Sub(); } interface mul { int mul(); } interface mod { int Mod(); } class Compute extends plus,sub,mul,mod { int pa,pb; Compute(int a,int b) { this.pa=a; pb=b; } public int Plus() { return(pa+pb); //和を返す } public int Sub() //差を返す { return(pa-pb); } public int Mul() { return(pa*pb); //積を返す } public int Mod() { return(pa%pb); //余を返す } } class calc { public static void main(String args[]) throws IOException { InputStreamReader isp=new InputStreamReader(System.stdin); BufferedReader inp=new BufferedReader(isp); System.out.print("数1="); String sLins=inp.readLine(); //1つめの数値を入力 int a=integer.parseInt(sLine); System.out.print("数2="); String sLins=inp.readLine(); //2つめの数値を入力 int b=integer.parseInt(sLine); Compute c=new Compute(a,b); System.out.println("和:"+c.Plus()+"差:"+c.Sub()+"積:"+c.Mul()+"余:"+c.Mod()); } }

    • ベストアンサー
    • Java
  • javaのコンパイルエラーについてです。

    「これならわかるJava」という本でjavaを勉強してます。 以下のソースコードをコンパイルした所、 「注:DogList.java の操作は、未チェックまたは安全ではありません。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください」 と、表示されます。 ネットで色々と調べてみましたが上手く行きません。 よろしくお願い致します。 import java.io.*; import java.util.*; class Dog { private String name; private int energy; public Dog(String n, int e){ name = n; if(e < 0) e = 0; energy = e; } public Dog(){ this("未定",50); } public void bark(){ if(energy == 0){ System.out.println("お腹が減ってほえられないよ。"); return; } System.out.println("わん、わん!"); energy--; } public void intro(){ System.out.println("僕の名前は" + name + "だ。わん。"); System.out.println("エネルギーは" + energy +"だ。わん。"); } public void eat(int e){ if(e < 0){ System.out.println("マイナスは与えられません。"); return; } energy += e; } public String getName(){ return name; } public void setName(String n){ name = n; } public int getEnergy(){ return energy; } public void setEnergy(int e){ if(e < 0) e = 0; energy = e; } public String toString(){ return "僕の名前は" + name + "だ。わん。\n" +"エネルギーは" + energy + "だ。わん。" ; } } class DogList { public static void main(String[] args) throws IOException { Vector dogs = new Vector(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str, name; int n, energy; for(;;){ System.out.println("名簿:どうしますか?"); System.out.println("1 一覧 2 追加 3 終了"); str = br.readLine(); n = Integer.parseInt(str); if(n == 1){ for(int i = 0; i < dogs.size(); i++){ ((Dog)dogs.elementAt(i)).intro(); System.out.println("-----"); } } else if(n == 2){ System.out.println("名前を入力:"); name = br.readLine(); System.out.println("エネルギーを入力:"); str = br.readLine(); energy = Integer.parseInt(str); dogs.addElement(new Dog(name, energy)); } else{ break; } } } }

    • ベストアンサー
    • Java
  • javaについて質問です。お願いします><

    javaについて質問です。お願いします>< シーザー暗号を実現するプログラムをじゃいたのですが、import java.io.*; class Prob6_3 { public static void main(String [] args)throws IOException { int key; //キー番号 String orgStr; //ターゲット文字列 String encStr; //暗号化文字列 String decStr; // 復号化文字列 String temp; BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); System.out.print("ターゲット文字列:"); orgStr=br.readLine(); System.out.print("キー番号:"); temp=br.readLine(); key=Integer.parseInt(temp); Cipher cip=new Cipher (); encStr=cip.encrypt(orgStr,key); decStr=cip.decrypt(encStr,key); System.out.println("[Original Code]"+orgStr); System.out.println("[Encrypted Code]"+encStr); System.out.println("[Decrypted Code]"+decStr); } } class Cipher { String encrypt(String str,int key) { String ret="";             //ココです1 for(int i=0;i<str.length();i++){ char c=str.charAt(i); c=(char)((int)c+key); ret+=c; } return ret; } String decrypt(String str,int key) { String ret="";              //ここです2 for(int i=0;i<str.length();i++){ char c=str.charAt(i); c=(char)((int)c-key); ret+=c; } return ret; } }   とこんな感じになり実行もできるのですが、class CipherのString encrypt(String str,int key)やString decrypt(String str,int key)のところで一つずつ文字をつなげて文字列にするにはStringBufferクラスのインスタンスを利用すると簡単だとききました。だけど記述方法がよくわからなく使用した場合のreturn文の書き方もイマイチわかりません><なのでできるだけ詳しく教えて頂けないでしょうか??お願いします。//ココですと書いてあるところです。お願いします><

    • ベストアンサー
    • Java
  • Javaプログラミング

    Javaプログラミングで分からない課題が出たので、教えてもらえませんか? 実行結果 1つ目の整数を入力してください。 23 2つ目の整数を入力してください。 12 足し算の結果:35 引き算の結果:11 プログラムの大枠はこのようになるのですが public class 〇〇 { public static void main(String[] args) { System.out.println("1つ目の整数を入力してください。"); } public static int add(int a,int b) { return (a + b); public static int sub(int a,int b) { } }

    • ベストアンサー
    • Java
  • Javaのプログラムについて至急教えてください!

    //Sub.java class Super{ public void A(){} } class Sub extends Super{ /* (1) */ } このプログラムの(1)に入るものを下から2つ選んで他のクラスのメインメソッドから呼び出すのですがどうやってもわかりません。わかる方教えてください! public void A(){} public String A(){ return "pool";} public int A(String str){return Integer.parseInt(st);} public int A(){return 3;} public Object A(){return new Object();}

    • ベストアンサー
    • Java
  • Javaのプログラムの質問です。

    Javaのプログラムについての質問です。 Listインターフェースの実装クラスの自作と、作成したクラスの全メソッドを呼び出すサンプルを作成せよ、という問題です。  注意点として、java.util.Listの実装クラスは使用出来ません(ArrayListなど)。実装するメソッドは、コードの中に番号を振ってあります。 import java.util.Collection; import java.util.Iterator; import java.util.ListIterator; import java.util.List; class LocalList implements List{  private int Count;  private String Data[];  private Iterator ite;  private ListIterator lite;  // コンストラクタ  void mylist(){   Data = new String[10];   Count = 0;  }  (1)  public boolean add(Object str){   if(Count >= 10){    return false;   }   Data[Count ++] = new String((String)str);   return true;  }  public void add(int i,Object str){  }        public boolean addAll(Collection c){   return false;  }        public boolean addAll(int i,Collection c){   return false;  }    (2)  public void clear(){   Count = 0;  }  public boolean contains(Object str){   return false;  }          public boolean containsAll(Collection c){   return false;  }  public boolean equals(Object str){   return false;  }    (3)  public Object get(int i){   return (i >= Count);  }  public int hashCode(){   return -1;  }  public int indexOf(Object str){   return -1;  }  public boolean isEmpty(){   return false;  }  public Iterator iterator(){   return ite;  }     public int lastIndexOf(Object str){   return -1;  }     public ListIterator listIterator(){   return lite;  }     public ListIterator listIterator(int i){   return lite;  }    (4)  public Object remove(int i){   return (i >= Count);  }    public boolean remove(Object str){   return true;  }         public boolean removeAll(Collection c){   return false;  }         public boolean retainAll(Collection c){   return false;  }    (5)  public Object set(int i,Object str){   return Data[i];  }    (6)  public int size(){   return Count;  }  public List subList(int i,int j){   return this;  }  public Object[] toArray(){   return Data;  }  public Object[] toArray(Object[] a){   return Data;  } } class Main {  public static void main(String[] args) {   mylist sub = new mylist();   sub.add("ビルドバーニングガンダム");   sub.add("ライトニングガンダム");   sub.add("ウイニングガンダム");   sub.add("ガンダムフェニーチェリナーシタ");   sub.add("R・ギャギャ");   for(int i = 0; i < sub.size(); i++){      System.out.println(sub.get(i));   }   // 改行   System.out.println();   // setメソッド   sub.set(1,"ガンダムエピオン");   for(int i = 0; i < sub.size(); i++){    System.out.println(sub.get(i));   }   // 改行   System.out.println();   // sizeメソッド   System.out.println("\r\n" + "機体数は" + sub.size() + "です" + "\r\n");   // removeメソッド   sub.remove(1);   for(int i = 0; i < sub.size(); i++){       System.out.println(sub.get(i));   }   // clearメソッド   sub.clear();   System.out.println("\r\n" + "機体数が" + sub.size() + "になったので負けです");    } } setメソッドとremoveメソッド以外は起動するのようになったのですが、この2つがうんともすんとも動きません。ジェネリクス型を使うという考え方もあるらしいのですが、ネットで調べてもピンと来ず寸詰まり状態になってしまっています。後少しだと思うのですが。。。。 どなたかご教授頂けないでしょうか?よろしくお願い致します。

  •  ポインタを使って関数の値のやり取り

    c言語の問題なのですが、2つの異なる1次元配列の積をseki関数を使って計算してもうひとつの配列に入れてmain関数で表示するのですが、うまく走りません原因がわかる人がいた教えてください。 作った実行文は、 #include<stdio.h> int seki(int *pa,int *pb,int *pc); main(){ int a[]={5,2,3,5,3,2,4,8,9,9,7},b[]={4,3,8,4,6,2,8,9,1,6,4},c[11]={0}; int i,*pa,*pb,*pc; pa=&a; pb=&b; pc=&c; seki(pa,pb,pc); for(i=0;i<11;i++) printf("%d,",*(pc+i)); } int seki(int *pa,int *pb,int *pc){ int j; for(j=0;j<11;j++) *(pc+j)=*(pa+j) * *(pb+j); } こんな表示が出てきます。 toi2.c: In function `main': toi2.c:7: warning: assignment from incompatible pointer type toi2.c:8: warning: assignment from incompatible pointer type toi2.c:9: warning: assignment from incompatible pointer type たぶんmain関数内で書いたseki関数の引数の型に問題があると思うのですが。

  • javaでカレンダー作成

    西暦年号・月を入力して、その月のカレンダーを出力するというものです。 <処理例> 指定日のカレンダーを出力します。 西暦年を入力:2007 月を入力:6 日 月 火 水 木 金 土 ______________________1____2 _3___4___5___6___7___8___9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 というものを出力したいです。下線は何もないという意味です。(見にくかったらすみません) 一応途中のプログラム載せます。 ~~~の部分を教えてください。 お願いします。 import java.io.*; public class Ex01a{ public static void main ( String[] args ) throws IOException{ int year, month, day, i, youbiNum=0; String ss; BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in)); System.out.println("指定月のカレンダーを出力します"); System.out.print("西暦年を入力:"); ss = kbd.readLine(); year = getInt(ss); System.out.print("月を入力:"); ss = kbd.readLine(); month = getInt(ss); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ day = 1; youbiNum=getyoubi(year,month,day); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } public static void printCal(int maxDay, int youbiNum){ int cal[] = new int[43]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public static int getyoubi(int year, int month, int day){ int youbiNum, y1, nissuu=0; y1 = year-1; nissuu += y1 + y1/4 - y1/100 + y1/400+getJulian(year, month, day); youbiNum = nissuu % 7; return youbiNum; } public static int getJulian(int year, int month, int day){ int julian; julian = day; while(--month > 0){ julian+=getDay(year,month); } return julian; } public static int getDay(int year, int month){ int mmdd[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int mmdd_day; mmdd[2] += uruu(year); mmdd_day = mmdd[month]; return mmdd_day; } public static int getInt(String ss){ try{ return Integer.parseInt(ss); } catch(Exception e){ return 0; } } public static int uruu(int yy){ if(yy%4==0 && yy%100!=0 || yy%400==0) return 1; else return 0; } }

  • JAVAの初心者です.

    import java.io.*; class Sample3 { public static void main(String args[])throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int meny; int max = 0; int kingaku[]; kingaku = new int[5]; char ss[][]; ss = new char[5][80]; do{ String hako = br.readLine(); meny = Integer.parseInt(hako); System.out.println("1:入力とその長さ"); System.out.println("2:データ入力"); System.out.println("3:データ表示"); System.out.println("4:おしまい"); switch(meny){ case 1: System.out.println("文字を入力してください。"); String input = br.readLine(); System.out.println(input + "は" + input.length + "文字です。"); break; case 2: if (max == 0){ System.out.printin("登録をしてからお選びください。"); }else{ System.out.println("名前を入力してください。"); String ss[max] = br.readLine(); System.out.println("金額を入力してください。"); String kingaku[max] = br.readLine(); System.out.println(ss[max] + "さんで" + kingaku[max] + "を登録します。"); max++; } break; case 3: System.out.println("現在登録人数は" + max + "人です。"); for(int aa = 0;aa<max;aa++){ System.out.println(name[max] + kingaku[max]); } break; } }while(meny != 4); } } 上記のソースなのですが、コンパイルで今のところ2つエラーが出てしまうのです。 String ss[max] = br.readLine(); String kingaku[max] = br.readLine(); の所がエラーと表示されます。 javaは入力した文字を表示するだけでしたら    = Integer.paruseint()する必要ないですよね?? 初心者ならではの質問でごめんなさい。 ご教授宜しくお願いいたします。

    • ベストアンサー
    • Java
  • Java int sum = 0は必要ですか?

    やさしいJavaという本を買ったのですが、良くわからない箇所がありました。 --------------省略----------------- class Sample6 { public static void main(String[] args) throws IOException { System.out.println("整数を3つ入力してください。") ; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) ; String str1 = br.readLine() ; String str2 = br.readLine() ; String str3 = br.readLine() ; int sum = 0 ; sum += Integer.parseInt(str1) ; -------------------略----------------- int sum = 0 ; とありますが、0と設定しておく必要はありますか? 無いとまずいですか? いきなりこのコードが出てきたと思うのですが どこかに書いてましたっけ?

    • ベストアンサー
    • Java

専門家に質問してみよう