JAVA入門編程題目求高手解答,指出我的錯誤并怎么改,謝謝!
題目:折扣計算(普通顧客購物滿100元打9折;會員購物打8折;會員購物滿200元打7.5折)利用嵌套if結構。
運行后能有上圖效果。
我的代碼:
import java.util.Scanner;
public class zuoye1
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.println("請輸入是否是會員:是(y)/否(n)");
String a=input.next();
System.out.println("請輸入購物金額");
double money=input.nextDouble();
if(a.equals(a))
{
if(money>=100)
System.out.println(“實際支付”+money*0.9);
else
System.out.println(“實際支付”+money);
}else{
if(money>=200)
System.out.println("實際支付"money*0.75);
else
System.out.println(“實際支付”+money*0.8);
}
}
}
為什么我一運行最后不管是不是會員最后實際支付都是System.out.println(“實際支付”+money*0.9);
請指出我的錯誤,并改正!
if(a.equals(a))
這一句,條件永久為true,不管輸入什么都會進入你這個if的判斷。按你里面正常的邏輯,應該是
if(a.equals("n"))
其實我是建議這樣
if(a.equalsIgnoreCase("n"))
無視大小寫輸入
為什么呢? 如果一直是一個 就看這個的條件啊 a.equals(a);這句恒真啊
基礎JAVA編程題目求大神詳細解答,謝謝!
題目:利用switch(輸入年和月,輸出對應年月包含的天數)rn注意閏年2月28天,平年29天,要有區別import java.util.Scanner;
public class Days {
public static void main(String[] args) {
int years,month;
Scanner reader=new Scanner(System.in);
years=reader.nextInt();
month=reader.nextInt();
switch(month){
case 1:System.out.println("31");break;
case 2:if((years%400==0)||(years%100!=0&&years%4==0))
System.out.println("29");
else System.out.println("28");
break;
case 3:System.out.println("31");break;
case 4:System.out.println("30");break;
case 5:System.out.println("31");break;
case 6:System.out.println("30");break;
case 7:System.out.println("31");break;
case 8:System.out.println("31");break;
case 9:System.out.println("30");break;
case 10:System.out.println("31");break;
case 11:System.out.println("30");break;
case 12:System.out.println("31");break;
}
}
}
java編程,這題怎么補充,求解答,謝謝!
見下圖,在要"填空"的地方已經填寫完整。
滿意請采納,有問題請追問。
JAVA編程題目,求大神高手幫忙解答下,謝謝!
題目:查詢商品價格
運行后能實現圖上效果,綠字為用戶輸入,黑子為固定
package org.xxl.demo;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ProtectPrice {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("*****************************************************");
System.out.println("請選擇要購買的商品編號:");
List<Product> list = getProductDate() ;
if(list!=null && list.size()>0){
for (Product product : list) {
System.out.print(product.getNumber() + "、" + product.getName() + " ");
}
}
System.out.println();
System.out.println("*****************************************************");
String flag = "" ;
int productNumber = 0 , count = 0;
Product product = null ;
float tranAmt = 0 ;
while(!flag.equals("n")){
productNumber = getProductNumber() ;
switch (productNumber) {
case 1:
count = getProductCount() ;
product = list.get(0) ;
System.out.println(product.getName() + " ¥" + product.getPrice() + " 數量:" + count + " 合計:" + (float) product.getPrice()*count) ;
tranAmt += (float) (product.getPrice()*count*0.8) ;
break ;
case 2:
count = getProductCount() ;
product = list.get(1) ;
System.out.println(product.getName() + " ¥" + product.getPrice() + " 數量:" + count + " 合計:" + (float) product.getPrice()*count) ;
tranAmt += (float) (product.getPrice()*count*0.8) ;
break ;
case 3:
count = getProductCount() ;
product = list.get(2) ;
System.out.println(product.getName() + " ¥" + product.getPrice() + " 數量:" + count + " 合計:" + (float) product.getPrice()*count) ;
tranAmt += (float) (product.getPrice()*count*0.8) ;
break ;
default:
System.out.println("請輸入正確的商品編號!!");
break;
}
flag = getFlag() ;
if(flag.equals("n")){
System.out.println("折扣:0.8");
System.out.println("應付金額:"+tranAmt);
System.out.print("實付金額:");
String amt = new Scanner(System.in).next() ;
float amts = Float.valueOf(amt) - tranAmt ;
while(amts<0){
System.out.println("應付金額:"+tranAmt);
amt = new Scanner(System.in).next() ;
amts = Float.valueOf(amt) - tranAmt ;
}
System.out.println("找錢:" + amts);
System.out.println("");
}
}
}
public static int getProductNumber(){
int number = 0 ;
try{
System.out.print("請輸入商品編號:");
Scanner scanner1 = new Scanner(System.in) ;
if(scanner1!=null){
number = Integer.parseInt(scanner1.next()) ;
}
}catch(Exception e){
System.out.println("請輸入0-9的自然數字!");
}
return number ;
}
public static int getProductCount(){
int count = 0 ;
try{
System.out.println("請輸入商品數量:");
Scanner scanner = new Scanner(System.in) ;
if(scanner!=null){
count = Integer.parseInt(scanner.next()) ;
}
}catch(Exception e){
System.out.println("請輸入0-9的自然數字!");
}
return count ;
}
public static String getFlag(){
String flag = "" ;
System.out.println("是否繼續(y/n):");
Scanner scanner = new Scanner(System.in) ;
if(scanner!=null){
flag = scanner.next() ;
if(!flag.equals("y") && !flag.equals("n")){
getFlag() ;
}
}
return flag ;
}
public static List<Product> getProductDate(){
List<Product> list = new ArrayList<Product>() ;
Product p1 = new Product(1,"T 恤",245.0f) ;
Product p2 = new Product(2,"網球鞋",570.0f) ;
Product p3 = new Product(3,"網球拍",897.0f) ;
list.add(p1) ;
list.add(p2) ;
list.add(p3) ;
return list ;
}
}
class Product{
int number ;
String name ;
float price ;
public Product() {
}
public Product(int num,String name,float price){
this.number = num ;
this.name = name ;
this.price = price ;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
給你看個簡單點的把~!
public class C103 {
public static void main(String[] args) {
System.out.println("MyShopping管理系統>購物結算"+"\n");
System.out.println("***************************************************");
System.out.println("請選擇購買的商品編號:");
System.out.println("1.T恤 2.網球鞋 3.網球拍");
System.out.println("***************************************************");
int price=0;
int b=0;
int c=0;
int d=0;
int total1=0;
int total2=0;
int total3=0;
double discount=0.8;
String name;
Scanner input=new Scanner(System.in);
System.out.print("輸入請按(y):");
String a=input.next();
while(!a.equals("n"))
{
System.out.print("請輸入商品編號:");
int q1=input.nextInt();
System.out.print("商品數量:");
int q=input.nextInt();
switch(q1)
{
case 1:
name="T恤";
b=245;
total1=b*q;
break;
case 2:
name="網球鞋";
c=570;
total2=c*q;
break;
case 3:
name="網球拍";
d=320;
total3=d*q;
break;
}
System.out.print("輸入請按(y)退出請按(n):");
a=input.next();
}
System.out.println("折扣:"+discount);
System.out.println("應付金額:"+(total1+total2+total3)*discount);
double q3=(total1+total2+total3)*discount;
System.out.print("輸入請實際付款金額:");
double q2=input.nextInt();
System.out.println("實付金額:"+q2);
System.out.println("找零:"+(q2-q3));
System.out.println("已經退出");
}
}
import java.util.Scanner;
public class Buy {
/**
* @param args
*/
public static void main(String[] args) {
String str = "";
String no = "";
String num = "";
double count = 0.0 ;
double one = 0.0 ;
Scanner sc = new Scanner(System.in);
System.out.println("************************************************");
System.out.println("請選擇購買的商品編號:");
System.out.println("1.T恤 2.網球鞋 3.網球拍");
System.out.println("************************************************");
while(!str.equals("n")){
System.out.println();
System.out.println();
System.out.print("請輸入商品編號:");
no = sc.next();
System.out.print("請輸入購買數量:");
num = sc.next();
switch (no.charAt(0)) {
case '1':
one = Integer.parseInt(num) * 245.0;
count += one ;
System.out.println("T恤 ¥245.0 數量 "+num+" 合計 ¥"+one);
break;
case '2':
one = Integer.parseInt(num) * 570.0;
count += one ;
System.out.println("網球鞋 ¥570.0 數量 "+num+" 合計 ¥"+one);
break;
case '3':
one = Integer.parseInt(num) * 770.0;
count += one ;
System.out.println("網球拍 ¥770.0 數量 "+num+" 合計 ¥"+one);
break;
default:
break;
}
System.out.print("是否繼續(y/n)");
str = sc.next();
}
System.out.println();
System.out.println();
System.out.println("折扣:0.8");
System.out.println("應付金額:"+count);
System.out.print("實付金額:");
String m = sc.next();
System.out.println("找錢:"+(Double.parseDouble(m)-count));
}
}
小白們好好學吧,這么簡單的循環都不會。。。。問問自己問什么學這個呢?要學就學會它,要么就不學,選自己喜歡的方向不可以嗎?
請教一個簡單的Java編程問題,謝謝!!
輸入一個整數,判斷這個數是不是質數給你這段代碼,應該可以實現你要的想法,import java.util.*;public class T2 { public static void main(String[] args) throws Exception { int a; Scanner sc=new Scanner(System.in); System.out.println("請輸入一個整數:"); a=sc.nextInt(); int i; for(i=2;i<a;i++) if(a%i==0)break; if(i==a) System.out.println(a+"是質數"); else System.out.println(a+"不是質數"); }}
這個問題可真心長,
首先樓主應該對素數的定義已經清楚了吧?其實就是一個數,如果存在1和它本身以外,有數能整除它,這個數就不是素數.
在這里,有2個關鍵的變量,我估計解釋一下你就能看得明白這個算法了.
1.關于變量k.變量k的作用是優化整個算法,因為比如要判斷一個數13是不是素數,我們沒必要從2循環到13.只要循環到對13開根號.13開根號大概是3.6多,強轉為int類型后是3.也就是說只要檢查2,3是否能整除13.如果不能,13肯定是一個素數.因為比如48這個數,你前面檢測到被4整除等于12,那么繼續循環超過Math.sqrt(48)的話,無非就是得到一個反過來的被12除等于4的結果.這個沒有必要.
2.關于變量j.注意點1:j是在最外層的循環體中定義的.這個時候剛定義完,j的值是初始的0.然后j從2開始,一直到小于等于k結束.這里是控制嘗試整除的循環次數.一旦發現在這個范圍內有數能整除i,那么就跳出循環.
所以,對于你不理解的那個部分,首先確定一點,程序只要執行到break,就說明這個數是素數.
例如我們這次k = 10,那么是要從j = 2到10逐一檢測 i 是不是能被 j 整除.當j = 7的時候比如可以整除了,就跳出當前內層循環了.這時候, j 顯然是不大于 k 的,因為只要是中途跳出,因為內層循環(j = 2; j <= k; j++)的控制,只要在循環過程中跳出來的,那么j 肯定 <= k.
只有循環到j = 10依然沒有break的話,根據for循環的執行順序,會執行j++,然后去判斷j <= k 是否為true,為true則繼續下一次循環,否則循環結束.而在這里,如果到10還沒有能夠整除的話,j是會在10的基礎上自增的.這時候j就=11了.
那么if ( j > k )就不成立了,則i 不會被輸出.
總結一點:就是如果中途or最后一次循環,找到能整除的數了,那么因為break的關系,最后就不會執行 j++, 所以j <= k的條件是能保證的. 換言之,如果j > k (亦即j <= k 的取反)表示沒有找到能整除的數.其實j最大也就只能等于k+1.
另外,,你也可以自己修改修改,來加深理解.例如
boolean isPrime; //定義布爾變量判斷是否素數.是:true;否:false
for (int i = 3; i <= 100; i++) {
isPrime = true;
int k = (int) Math.sqrt(i);
for (int j = 2; j <= k; j++) {
if (i % j == 0) {
isPrime = false; //如果能夠有數整除i,那么就不是素數.
break;
}
}
if (isPrime) {
System.out.println(i);
}
}
這樣就沒有必要在外層循環里就定義j這個變量了.如果我上面說的你理解還是比較困難,可以先理解用布爾變量來控制的寫法.這個理解了,用j > k 判斷的就也很容易理解了.
相關推薦:
專利權人變更(公司更名后 如何變更專利權人)
專利糾紛訴訟(侵犯專利如何起訴要求賠償)
馳名商標認定途徑(馳名商標的認定方式)
專利初步審查(發明專利申請怎樣進行初步審查)
網絡小說版權(網絡小說版權歸誰所有)