关于JAVA编程的问题。(新手初学,高手勿喷)

之前学会一点C,仅有点印象了,昨天开始学习JAVA,有两个小程序SDK报错,实在搞不懂了,高手指点下。谢了!1:通过输入7天的天气温度计算平均值。(这样运用数组不对么?教... 之前学会一点C,仅有点印象了,昨天开始学习JAVA,有两个小程序SDK报错,实在搞不懂了,高手指点下。谢了!
1:通过输入7天的天气温度计算平均值。(这样运用数组不对么?教程上写的Scanner sc=new Scanner(System.in); 看不懂,运行也报错,下面是我自己写的)

public class tianqi {
public static void main(String[] args){
int average,i;
int sum=0;
System.out.println("输入7天的温度:");
for(i=0;i<args.length;i++);
sum=sum+args[i];
average=sum/7;
System.out.println("周"+(i+1)+"的温度为"+args[i]);
System.out.println("平均温度为:"+ average);
}
}
报错:
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
类型不匹配:不能从 String 转换为 int
at tianqi.main(tianqi.java:8)
2:计算1+2+3+...n的值(这个是在教材上抄写的,不懂为啥报错,“输入”的语法也看不太懂)
public class xunhuan {

public static void main(String[] args) {
int sum=0;
System.out.println("计算1+2+..+n的值,请输入n=");
char n=(char)System.in.read(); //这是什么?
char a=n;
for(a;a>0;a--)
sum+=a;
System.out.println("从1加到"+n+"的和值为"+sum);
}
}
报错:
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
语法错误,将“AssignmentOperator 表达式”插入到完整 ForInit 中

at xunhuan.main(xunhuan.java:9)
:
展开
 我来答
四处看看行不
2013-06-22
知道答主
回答量:15
采纳率:0%
帮助的人:19.5万
展开全部
  1. 第一题,代码有点问题,arg[i]应该放在for循环中的,后面对arg[i]参数使用Integer.parseInt(String str)方法转换成int类型,Integer类是int的包装类,属于java.lang包,只要是java程序,都可以直接使用这个包,不需要导包。该过之后,我运行了一次,显示是成功的。

     

    public class Test1 {
     public static void main(String[] args) {
        int average,i;
        int sum=0;
        System.out.println("输入7天的温度:");
        for(i=0;i<args.length;i++)
        {
              sum=sum+Integer.parseInt(args[i]);
              System.out.println("周"+(i+1)+"的温度为"+args[i]);
        }
        average=sum/7;
        System.out.println("平均温度为:"+ average);

     }
    }

    运行结果: 

    D:\>javac Test1.java

    D:\>java Test1 85 69 12 32 20 12 45
    输入7天的温度:
    周1的温度为85
    周2的温度为69
    周3的温度为12
    周4的温度为32
    周5的温度为20
    周6的温度为12
    周7的温度为45
    平均温度为:39

  2.  第二题代码也有问题,反正编译之前就提示代码是错的。我也改了一下。n在使用之前必须先初始化,否则编译时编译器会提示出错。还有for循环中for(a;a>0;a--)中的第一句必须是赋值语句,即必须是a=xxx。虽然a是char类型也可以用在for循环中,但是一般建议使用int类型的数据更好。因为char类型的数据也可以等价于int类型的数据的用法,但是因为它们是通过ASCII码来转换的,所以char类型的数据最终解释成int类型时并不一定是你想要的数据。

    这里也是使用Integer.parseInt(String str)方法将输入的字符转换成int类型。System.in是程序的输入流,是从控制台上获取数据,传到程序中;另外System.out是程序的输出流,是从程序中获取数据,传到控制台上。System.out.println()方法你用过了,应该能理解的,就是输出输出流里面的数据。

     

    public static void main(String[] args) {
      int sum=0;
      System.out.println("计算1+2+..+n的值,请输入n=");
      char n=' ';
      try {
       n = (char)System.in.read();
      } catch (IOException e) {
       e.printStackTrace();
      }                             
      int a=Integer.parseInt(n+"");
      for(;a>0;a--)
       sum+=a;
      System.out.println("从1加到"+n+"的和值为"+sum);
     }

    运行结果:
    计算1+2+..+n的值,请输入n=
    100
    从1加到1的和值为1

     

    虽然改过之后是可以运行的,不过因为char接受的是单个字符,所以只有1-9的输入是有效的,所以我用另一种方式来获取控制台数据,可以更好的完成功能。使用前导入import java.util.Scanner;使用Scanner类的原因是:

    InputStream输入流(即System.in)以字节为单位来获取数据,而且需要复杂的判断并创建字节数组作为缓冲,最主要的是字节转换为字符时容易出现中文乱码的情况,所以对于字符数据的读取,应该使用扫描器进行封装,然后获取字符串类型的数据。

     

     

    public static void main(String[] args) {
      int sum=0;
      System.out.println("计算1+2+..+n的值,请输入n=");
      Scanner scan=new Scanner(System.in);
      String input=scan.nextLine();
      int a=Integer.parseInt(input);
      for(;a>0;a--)
       sum+=a;
      System.out.println("从1加到"+input+"的和值为"+sum);
     }

    运行结果:
    计算1+2+..+n的值,请输入n=
    100
    从1加到100的和值为5050

     

Wingsoffree
2013-06-21 · 超过20用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:48.2万
展开全部
没学过java,只能帮你解答第一个问题。
sum=sum+args[i];这句,sum是整型变量,args[]是字符串数组,args[i]是一个字符串。
将不同类型变量相加时,编译器会进行类型转换,而string是无法转换为int的,因此会出现“不能从 String 转换为 int”的错误提示。
追问
应该是这样,但我初学,不知道怎么化解这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Kingfeng001
2013-06-22 · TA获得超过173个赞
知道答主
回答量:18
采纳率:0%
帮助的人:11.5万
展开全部
第1题你没有必要这样做,你可以自己定义一个int类型的数组,然后获取数组中的元素,就不会出现类型转换异常了!
第2题中a是char类型的,怎么会在for循环中出现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
be_happy_xian
2013-06-21 · 超过10用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:37.8万
展开全部
第一个问题,String[]要转换成int,可以用sum += Integer.parse(args[i]);
第二个问题Scanner sc=new Scanner(System.in);可以直接用int a = sc.readInt();
追问
第一题改后也报错,提示:没有为类型 Integer 定义方法 parse(String)
另外你说的第二题是看错了,那是我第一题。。
不过谢了!
追答
额...不好意思,是parseInt(args[i])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-22
展开全部
没有导入包吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式